Gabor Grothendieck
2025-Oct-26 14:47 UTC
[R] Construct a function with argments specified by an R expression
This can be simplified slightly to
# inputs
arg_names <- c("x", "y", paste0("a", 1:3),
paste0("b", 1:3))
f <- function() {}
arg <- alist(x = )
formals(f) <- setNames(rep(arg, length(arg_names)), arg_names)
f
## function (x, y, a1, a2, a3, b1, b2, b3)
## {
## }
On Sun, Oct 26, 2025 at 10:41?AM Gabor Grothendieck
<ggrothendieck at gmail.com> wrote:>
> Define the names and a prototype and then use formals(f) <- ... as
shown.
>
> # inputs
> arg_names <- c("x", "y", paste0("a",
1:3), paste0("b", 1:3))
> f <- function() {}
>
> arg <- alist(x = )
> formals(f) <- setNames(c(arg, rep(arg, length(arg_names)-1)),
arg_names)
> f
>
> giving
>
> function (x, y, a1, a2, a3, b1, b2, b3)
> {
> }
>
> On Fri, Oct 24, 2025 at 10:23?PM Rolf Turner <rolfturner at
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 at 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.
>
>
>
> --
> Statistics & Software Consulting
> GKX Group, GKX Associates Inc.
> tel: 1-877-GKX-GROUP
> email: ggrothendieck at gmail.com
--
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com
Gabor Grothendieck
2025-Oct-26 18:13 UTC
[R] Construct a function with argments specified by an R expression
Here is an approach using as.function.formula from gsubfn:
library (gsubfn)
# inputs
arg_names <- head(letters)
f <- function() {}
formals(f) <- formals(as.function(reformulate(arg_names)))
f
On Sun, Oct 26, 2025 at 10:47?AM Gabor Grothendieck
<ggrothendieck at gmail.com> wrote:>
> This can be simplified slightly to
>
> # inputs
> arg_names <- c("x", "y", paste0("a",
1:3), paste0("b", 1:3))
> f <- function() {}
>
> arg <- alist(x = )
> formals(f) <- setNames(rep(arg, length(arg_names)), arg_names)
> f
>
> ## function (x, y, a1, a2, a3, b1, b2, b3)
> ## {
> ## }
>
> On Sun, Oct 26, 2025 at 10:41?AM Gabor Grothendieck
> <ggrothendieck at gmail.com> wrote:
> >
> > Define the names and a prototype and then use formals(f) <- ... as
shown.
> >
> > # inputs
> > arg_names <- c("x", "y",
paste0("a", 1:3), paste0("b", 1:3))
> > f <- function() {}
> >
> > arg <- alist(x = )
> > formals(f) <- setNames(c(arg, rep(arg, length(arg_names)-1)),
arg_names)
> > f
> >
> > giving
> >
> > function (x, y, a1, a2, a3, b1, b2, b3)
> > {
> > }
> >
> > On Fri, Oct 24, 2025 at 10:23?PM Rolf Turner <rolfturner at
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 at 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.
> >
> >
> >
> > --
> > Statistics & Software Consulting
> > GKX Group, GKX Associates Inc.
> > tel: 1-877-GKX-GROUP
> > email: ggrothendieck at gmail.com
>
>
>
> --
> Statistics & Software Consulting
> GKX Group, GKX Associates Inc.
> tel: 1-877-GKX-GROUP
> email: ggrothendieck at gmail.com
--
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com