【发布时间】:2013-04-02 00:52:49
【问题描述】:
我有一个公式列表,我使用lapply 和lm 创建一个回归模型列表。但是,当我查看每个线性模型的call 组件时,我看到的不是显式公式,而是我解析成线性模型的变量的名称。例如。使用 mtcars 数据集:
temp_formula_list = list(as.formula(hp~1),as.formula(hp~cyl))
temp_fm_list = lapply(temp_formula_list, function(x) lm(data = mtcars, formula = x))
然后检查call 的temp_fm_list[[2]]:
temp_fm_list[[2]]$call
给予
lm(formula = x, data = mtcars)
当我希望它明确给出时
lm(formula = hp~cyl, data = mtcars)
【问题讨论】:
-
do.call在这种情况下非常有用;参见例如stackoverflow.com/a/7668846/210673 -
谢谢。这看起来几乎是我的问题的重复。我猜我应该在 lapply 中使用
do.call("lm",args = list(formula = x, data=mtcars))而不是lm(data = mtcars, formula = x)。 -
这种工作,除了它还评估mtcars数据,导致一个非常混乱的
call组件...... -
do.call("lm",args = list(formula = x, data= quote(mtcars)))会如你所愿。 -
as.name也可以工作(而不是quote);这埋在我之前链接到的答案的 cmets 中
标签: r