34

我正在尝试使用lm(...). 我的数据集有很多特征(>50)。我不想把我的代码写成:

lm(output ~ feature1 + feature2 + feature3 + ... + feature70)

我想知道编写此代码的简写符号是什么?

4

2 回答 2

60

您可以.按照帮助页面中的说明使用formula. .代表“公式中没有的所有列” 。

lm(output ~ ., data = myData).

或者,使用 手动构造公式paste。此示例来自as.formula()帮助页面:

xnam <- paste("x", 1:25, sep="")
(fmla <- as.formula(paste("y ~ ", paste(xnam, collapse= "+"))))

然后,您可以将此对象插入回归函数:lm(fmla, data = myData).

于 2011-04-25T03:31:18.783 回答
6

也可以尝试以下方法:

lm(output ~ myData[,2:71], data=myData)

假设输出是第一列 feature1:feature70 是接下来的 70 列。

或者

features <- paste("feature",1:70, sep="")
lm(output ~ myData[,features], data=myData)

可能更聪明,因为列在您的数据中的哪个位置并不重要。

如果为 NA 删除了行,可能会导致问题......

于 2011-04-25T04:08:07.263 回答