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

Kon*_*rad 1 syntax r function nse

我感兴趣的是使用的特殊的呼叫call/ eval在代码:

eval(call("mean", c(2,3)))
Run Code Online (Sandbox Code Playgroud)

这将正确地产生结果2.5.现在,我想在特殊调用中使用相同的语法.

例: +

  1. 呼叫:

    eval(call("`+`", c(2,3)))
    
    Run Code Online (Sandbox Code Playgroud)

    产生错误:

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

  2. 与通话类似,

    eval(call("+", c(2,3)))
    
    Run Code Online (Sandbox Code Playgroud)

    没有产生预期的结果:

    [1] 2 3
    
    Run Code Online (Sandbox Code Playgroud)

期望的结果应该简单地返回长度为1的向量,其中单值为5,如通过2 + 3调用获得的.

Rol*_*and 7

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

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

eval(call("+", 2, 3))
#[1] 5
Run Code Online (Sandbox Code Playgroud)

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

do.call("+", list(2, 3))
#[1] 5
Run Code Online (Sandbox Code Playgroud)