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

Iris Simmons |kw@|mmo @end|ng |rom gm@||@com
Sat Oct 25 04:31:53 CEST 2025


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

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.

On Fri, Oct 24, 2025, 22:23 Rolf Turner <rolfturner using posteo.net> wrote:

>
> I want to build a function (say "buildFn") to *return* a function of the
> form
>
>     foo(x,y,a1, ... an, b1, ..., bn)
>
> where the arguments ai and bi are given in the form of a list created
> in R.  E.g. I'd like to be able to say
>
>      argnms <- c(paste0("a",1:3),paste0("b",1:3"))
>      foo <- buildFn(argnms)
>
> with the resulting "foo" having arguments x, y, a1, a2, a3, b1, b2, b3.
>
> I thought I might be able to do this using "formals<-" but I cannot get
> this to work.  i could provide more detail of what I've tried, but it's
> probably not worth it.
>
> Can anyone steer me in the right direction?  Thanks.
>
> cheers,
>
> Rolf Turner
>
> --
> 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
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> https://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list