【发布时间】:2013-12-14 09:43:15
【问题描述】:
我希望这段代码设置 plt 等于 10:
> var = "plt"
> eval(paste0(var, "<-", 10))
[1] "plt<-10"
但是,它返回的是一个字符串。
我尝试了eval(as.expression(paste0(var, "<-", 10))) 和其他选项,但仍然没有给出预期的结果。
代码有什么问题?
【问题讨论】:
-
如果答案是 parse() 你通常应该重新考虑这个问题。 -- Thomas Lumley R-help(2005 年 2 月)
-
你到底想做什么?
-
@Thomas 执行一个函数,其名称作为参数传递给另一个函数。喜欢
function(type, ...) eval(parse(text=paste0("plt <- ", type, "(...)"。 -
@Anton 那样的话,请看罗兰的回答。
-
通常传递函数名是一件非常非常糟糕的事情。而是传递 actual 函数。
foo("sqrt")不好,因为您必须跳过各种障碍才能恢复功能。foo(sqrt)更好:foo=function(f){f(2)}巧妙地应用传入的函数。
标签: r variables expression eval