我在嵌入在函数中嵌入的data.table环境中的“lm”函数中的变量范围方面遇到了麻烦。我试图通过自编写函数传递一个公式,该函数传递给嵌入在data.table中的lm函数。我已经创建了一个我想要完成的简单示例:
require(data.table)
d <- as.data.frame(cbind(seq(1,10), rnorm(1000), rnorm(1000)))
names(d) <- c('firm', 'y', 'x')
lm_example <- function(formula, data, group){
data <- data.table(data)
data[ , list(model = list(lm(formula))), by=group]
# what I want it to evaluate to
# data[ , list(model = list(lm(y ~ x))), by='firm']
}
lm_example(y ~ x, data=d, group='firm') # this doesn't work
示例评估为“eval中的错误(expr,envir,enclos):找不到对象'y'。”作为一个黑客,我尝试过各种各样的“粘贴”,“引用”,“评估”,“替代”和“as.formula”的组合,但我似乎无法让它工作。
任何有关确定范围和语法以使此功能起作用的帮助都将非常感激。