在函数中的data.table中作用域

时间:2014-01-14 05:13:53

标签: r data.table

我在嵌入在函数中嵌入的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”的组合,但我似乎无法让它工作。

任何有关确定范围和语法以使此功能起作用的帮助都将非常感激。

0 个答案:

没有答案