R 从列表中传递glm预测值

R 从列表中传递glm预测值,r,plyr,R,Plyr,我有一大套模型规范要测试,它们共享一个dv,但有唯一的IVs。在下面的示例中 foo <- data.frame(dv = sample(c(0,1), 100, replace=T), x1 = runif(100), x2 = runif(100)) 不幸的是,有人告诉我 Error in model.frame.default(formula = dv ~ i, data = foo, drop.unused

我有一大套模型规范要测试,它们共享一个dv,但有唯一的IVs。在下面的示例中

foo <- data.frame(dv  = sample(c(0,1), 100, replace=T),
                  x1 = runif(100),
                  x2 = runif(100))
不幸的是,有人告诉我

Error in model.frame.default(formula = dv ~ i, data = foo, drop.unused.levels = TRUE):variable lengths differ (found for 'i')

很明显,我混淆了一些基本的东西——我需要以某种方式操纵原始的foo列表吗?

问题是,
dv~I
不是一个公式
i
是(在匿名函数中)表示包含字符值的变量的符号

试试这个:

bar <- list("dv~x1",
            "dv~x2", 
            "dv~x1+x2",
            "dv~x1*x2")

res <- llply(bar, function(i) glm(i, data = foo, family = binomial()))

bar问题在于
dv~i
不是一个公式
i
是(在匿名函数中)表示包含字符值的变量的符号

试试这个:

bar <- list("dv~x1",
            "dv~x2", 
            "dv~x1+x2",
            "dv~x1*x2")

res <- llply(bar, function(i) glm(i, data = foo, family = binomial()))

bar您的问题在于如何指定公式,因为函数i内部是一个变量。这将有助于:

glm(paste("dv ~", i), data = foo, family = binomial())

您的问题在于如何指定公式,因为在函数i内部是一个变量。这将有助于:

glm(paste("dv ~", i), data = foo, family = binomial())

太棒了,谢谢乔兰。我很感激你关于
质量的建议,但是,在这种情况下,我有一套具体的型号规格。太棒了,谢谢joran。我非常感谢您对
MASS
的建议,但是,在这种情况下,我考虑了一组特定的型号规格。这适用于任何配方,我尝试将其用于rpart以输入我选择的功能。这适用于任何配方,我尝试将其用于rpart以输入我选择的功能。