我有兴趣在代码中call
/ eval
内使用special call:
eval(call("mean", c(2,3)))
将正确生成结果 2.5。现在,我想使用与special call相同的语法。
+
呼叫:
eval(call("`+`", c(2,3)))
产生错误:
eval(expr,envir,enclos)中的错误:找不到函数"
+
"
与通话类似,
eval(call("+", c(2,3)))
没有产生预期的结果:
[1] 2 3
所需结果应该只返回长度为1的向量,其中单值 5 是通过2 + 3
调用获得的。
答案 0 :(得分:7)
eval(call("+", c(2,3)))
工作正常。你用一个向量调用一元加号,它返回相同的向量。
如果要使用二进制加号,则需要提供两个参数:
eval(call("+", 2, 3))
#[1] 5
但在生产代码中do.call
应该更合适:
do.call("+", list(2, 3))
#[1] 5