Kon*_*rad 1 syntax r function nse
我感兴趣的是使用的特殊的呼叫中call/ eval在代码:
eval(call("mean", c(2,3)))
Run Code Online (Sandbox Code Playgroud)
这将正确地产生结果2.5.现在,我想在特殊调用中使用相同的语法.
+呼叫:
eval(call("`+`", c(2,3)))
Run Code Online (Sandbox Code Playgroud)
产生错误:
eval中的错误(expr,envir,enclos):找不到函数"
+"
与通话类似,
eval(call("+", c(2,3)))
Run Code Online (Sandbox Code Playgroud)
没有产生预期的结果:
[1] 2 3
Run Code Online (Sandbox Code Playgroud)期望的结果应该简单地返回长度为1的向量,其中单值为5,如通过2 + 3调用获得的.
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)