将c("x","y","z")之类的矢量转换为函数(x,y,z){}

Ale*_*lex 2 arguments r function vector

如何将矢量转换c("x","y","z")function(x , y, z){}R?

我正在寻找类似反向功能的东西formalArgs().

请注意,我知道,as.function(alist(x=,y=,{}))但我不知道如何从给定的向量插入x=和插入y=.

jos*_*ber 7

基本上要让这个工作你需要打电话

as.function(alist(x=, y=, z=, {}))`
Run Code Online (Sandbox Code Playgroud)

这相当于

as.function(alist(x=bquote(), y=bquote(), z=bquote(), {}))
Run Code Online (Sandbox Code Playgroud)

第二种形式很好,因为我们有一组命名参数alist,可以使用列表以编程方式提供do.call:

l <- list(x=bquote(), y=bquote(), z=bquote(), bquote({}))
as.function(do.call(alist, l))
# function (x, y, z) 
# {
# }
Run Code Online (Sandbox Code Playgroud)

剩下的工作就是构建我们的名单l从变量名,这是可以做到的名单编程setNamesreplicate:

vec <- c("x","y","z")
as.function(do.call(alist, c(setNames(replicate(length(vec), bquote(), F), vec),
                             bquote({}))))
# function (x, y, z) 
# {
# }
Run Code Online (Sandbox Code Playgroud)