如何在R中创建包含空元素的成对列表?

如何在R中创建包含空元素的成对列表?,r,tree,substitution,R,Tree,Substitution,在R,当我 substitute(function(a) { a })[[2]] 我看到了以下成对列表: $a 请注意,元素的值为空。我如何创建这样一个成对列表?以下内容不适用于我: > pairlist(a="") $a [1] "" 我是在以编程方式创建函数的上下文中提出这个问题的。我想做一些像 > call("function", pairlist(a=""), call("{", as.symbol("a"))) function(a = "") { a }

在R,当我

substitute(function(a) { a })[[2]]
我看到了以下成对列表:

$a
请注意,元素的值为空。我如何创建这样一个成对列表?以下内容不适用于我:

> pairlist(a="")
$a
[1] ""
我是在以编程方式创建函数的上下文中提出这个问题的。我想做一些像

> call("function", pairlist(a=""), call("{", as.symbol("a")))
function(a = "") {
    a
}
这与我所做的非常接近

> substitute(function(a){a})
function(a) {
    a
}
除了函数参数部分。

alist(a=)

您还可能发现函数
formals
body
有助于以编程方式创建函数,而不是
substitute
call
。下面是一个来自文档
?formals

f <- function(x) a+b
formals(f) <- alist(a=,b=3) # function(a,b=3)a+b
f(2) # result = 5
f试试这个:

> as.pairlist(alist(a=))
$a
也许你想做的是:

> f2 <- as.function(alist(a=1,b=,{a+b}))
> f2
function (a = 1, b) 
{
    a + b
}
>f2
函数(a=1,b)
{
a+b
}
> f2 <- as.function(alist(a=1,b=,{a+b}))
> f2
function (a = 1, b) 
{
    a + b
}