【问题标题】:How do I create pairlist with empty elements in R?如何在 R 中创建带有空元素的配对列表?
【发布时间】:2011-12-23 00:06:52
【问题描述】:

在 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
}

函数参数部分除外。

【问题讨论】:

    标签: r tree substitution


    【解决方案1】:

    试试这个:

    > as.pairlist(alist(a=))
    $a
    

    也许你想做的是:

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

    【讨论】:

      【解决方案2】:

      alist(a=)

      您可能还会发现函数 formalsbody 有助于以编程方式创建函数,而不是 substitutecall。这是文档?formals中的一个示例

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

      可以这样扩展

      body(f) <- expression(2*a+b)
      f(2) # result = 7
      

      【讨论】:

        猜你喜欢
        • 2020-07-18
        • 2016-09-07
        • 2021-06-20
        • 1970-01-01
        • 1970-01-01
        • 2019-08-12
        • 2019-04-28
        • 2014-02-01
        • 2020-08-09
        相关资源
        最近更新 更多