[R] Construct a function with argments specified by an R expression

Rolf Turner ro||turner @end|ng |rom po@teo@net
Sat Oct 25 05:17:11 CEST 2025


On Fri, 24 Oct 2025 22:31:53 -0400
Iris Simmons <ikwsimmo using gmail.com> wrote:

> I would start by making a list of the desired length, where each
> element is the missing argument:
> 
> f <- rep(list(quote(expr = )), 2 + length(argnms))
> 
> then add names to the list:
> 
> names(f) <- c("x", "y", argnms)
> 
> and then use formals<-
> 
> formals(foo) <- f

Wow! That was fast!  And it seems to do exactly what I want.

What I was missing, I guess, was the quote(expr = ) structure.  I have
never really understood quote(), nor expr() either.  I'll just treat it
as a black box for now.

> Although, I would ask if you're certain that this is actually what
> you want to do. It's usually a bad idea to have variable names that
> you don't know. I'd to think it'd be better to have the default
> argument:
> 
> a = list()
> 
> and supply a list of `a` values instead of several `a` arguments.

Yes I understand that that would be the "sensible" approach but it
doesn't work in the context with which I am confronted.

I have more work to do before I get the approach that I've envisaged up
and running.

I may inflict more questions upon you later.  (No good deed goes
unpunished! 🙂️)


cheers,

Rolf

-- 
Honorary Research Fellow
Department of Statistics
University of Auckland
Stats. Dep't. (secretaries) phone:
         +64-9-373-7599 ext. 89622
Home phone: +64-9-480-4619



More information about the R-help mailing list