在调用中使用特殊函数调用的正确语法

时间:2017-04-26 13:37:37

标签: r function syntax nse

我有兴趣在代码中call / eval内使用special call

eval(call("mean", c(2,3)))

将正确生成结果 2.5。现在,我想使用与special call相同的语法。

示例:+

  1. 呼叫:

    eval(call("`+`", c(2,3)))
    

    产生错误:

      

    eval(expr,envir,enclos)中的错误:找不到函数" +"

  2. 与通话类似,

    eval(call("+", c(2,3)))
    

    没有产生预期的结果:

    [1] 2 3
    
  3. 所需结果应该只返回长度为1的向量,其中单值 5 是通过2 + 3调用获得的。

1 个答案:

答案 0 :(得分:7)

eval(call("+", c(2,3)))工作正常。你用一个向量调用一元加号,它返回相同的向量。

如果要使用二进制加号,则需要提供两个参数:

eval(call("+", 2, 3))
#[1] 5

但在生产代码中do.call应该更合适:

do.call("+", list(2, 3))
#[1] 5