【发布时间】:2016-10-22 15:39:21
【问题描述】:
从这些字符串
data = "mtcars"
y = "mpg"
x = c("cyl","disp")
,我正在尝试执行线性模型。我试过像
epp=function(x) eval(parse(text=paste0(x,collapse="+")))
lm(data=epp(data),epp(y)~epp(x))
# Error in eval(expr, envir, enclos) : object 'cyl' not found
最后一行的目标是等价于
lm(data=mtcars,mpg~cyl+disp)
【问题讨论】:
-
你会得到大量的人告诉你根本不要这样做,除非你提供一些详细的上下文,我猜这涉及某种请求数据的应用程序, x 和 y 来自用户的参数,然后运行线性模型?解释上下文可能会避免误解,并可能会带来更好的答案。
-
@joran 我的目标是制作一个为 MCMCglmm 执行逐步模型选择的函数。
-
在这种情况下,您传递的是数据框名称的字符表示,而不是对象本身,这似乎非常奇怪。
-
是的,你是正确的 data.frame。原因是(1)部分是为了学习和(2)在传递给函数时不必复制整个data.frame(但无论如何复制时间都可以忽略不计)。我现在改了。
标签: r eval lm evaluation expression-evaluation