在 call 中使用特殊函数调用的正确语法
Correct syntax for using special function call in call
我有兴趣在 call
/eval
中使用 special call,如代码所示:
eval(call("mean", c(2,3)))
将正确生成结果 2.5. 现在,我想对 special call.
使用相同的语法
示例:+
通话:
eval(call("`+`", c(2,3)))
产生错误:
Error in eval(expr, envir, enclos) : could not find function "+
"
与调用类似,
eval(call("+", c(2,3)))
没有产生预期的结果:
[1] 2 3
期望的结果应该只是 return 长度为 1 的向量,具有单个值 5,通过 2 + 3
调用获得。
eval(call("+", c(2,3)))
工作正常。您正在用向量调用一元加号,returns 相同的向量。
如果你想使用二进制加法,你需要提供两个参数:
eval(call("+", 2, 3))
#[1] 5
但是 do.call
在生产代码中应该更可取:
do.call("+", list(2, 3))
#[1] 5
我有兴趣在 call
/eval
中使用 special call,如代码所示:
eval(call("mean", c(2,3)))
将正确生成结果 2.5. 现在,我想对 special call.
使用相同的语法示例:+
通话:
eval(call("`+`", c(2,3)))
产生错误:
Error in eval(expr, envir, enclos) : could not find function "
+
"与调用类似,
eval(call("+", c(2,3)))
没有产生预期的结果:
[1] 2 3
期望的结果应该只是 return 长度为 1 的向量,具有单个值 5,通过 2 + 3
调用获得。
eval(call("+", c(2,3)))
工作正常。您正在用向量调用一元加号,returns 相同的向量。
如果你想使用二进制加法,你需要提供两个参数:
eval(call("+", 2, 3))
#[1] 5
但是 do.call
在生产代码中应该更可取:
do.call("+", list(2, 3))
#[1] 5