【问题标题】:Correct syntax for using special function call in call在调用中使用特殊函数调用的正确语法
【发布时间】:2017-09-23 22:56:05
【问题描述】:

我有兴趣在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
    

所需的结果应该简单地返回长度为 1 的向量,该向量具有通过 2 + 3 调用获得的单个值 5

【问题讨论】:

    标签: r function syntax nse


    【解决方案1】:

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

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

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

    do.call 在生产代码中应该更可取:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 2021-08-26
      • 2019-10-23
      相关资源
      最近更新 更多