我有一大套模型规格要测试,它们共享一个 dv 但有独特的 IV。在下面的例子中
foo <- data.frame(dv = sample(c(0,1), 100, replace=T),
x1 = runif(100),
x2 = runif(100))
我希望第一个模型只包含 x1,第二个 x2,第三个两者,第四个它们的交互。所以我认为一个明智的方法是建立一个公式语句列表:
bar <- list("x1",
"x2",
"x1+x2",
"x1*x2")
然后我将在包的llply
调用中使用plyr
它来获取模型对象的列表。
require(plyr)
res <- llply(bar, function(i) glm(dv ~ i, data = foo, family = binomial()))
不幸的是,我被告知
Error in model.frame.default(formula = dv ~ i, data = foo, drop.unused.levels = TRUE):variable lengths differ (found for 'i')
显然我混淆了一些基本的东西——我需要以某种方式操纵原始的 foo 列表吗?