对于那些熟悉R
的人来说非常简单full <- lm(hello~., hellow)
在上面的规范中,正在使用线性回归,并且正在针对数据集hellow
中的所有变量建模hello。
hellow
中有33个变量;我希望将其中一些指定为自变量。这些变量的名称具有含义,所以我真的不想将它们重命名为x1
x2
等。
如何在不必输入变量的个别名称的情况下(因为这非常繁琐),从整个群体中指定一定数量的变量?
我试过
full <- lm(hello~hellow[,c(2,5:9)]., hellow)
但它给了我一个错误"Error in model.frame.default(formula = hello ~ hellow[, : invalid type (list) for variable 'hellow[, c(2, 5:9)]'
答案 0 :(得分:3)
reformulate
将根据变量的名称构造一个公式,如下所示:
(首先构建数据):
set.seed(101)
hellow <- setNames(as.data.frame(matrix(rnorm(1000),ncol=10)),
c("hello",paste0("v",1:9)))
现在运行代码:
ff <- reformulate(names(hellow)[c(2,5,9)],response="hello")
full <- lm(ff, data=hellow)
应该有效。 (适用于此示例。)
我刚刚遇到了一个更简单的解决方案;只需先选择您想要的列/变量:
hellow_red <- hellow[,c(1,2,5,9)]
full2 <- lm(hello~., data=hellow_red)
all.equal(coef(full),coef(full2)) ## TRUE