假设我有一个响应变量和一个包含三个协变量的数据(作为一个玩具示例):

y = c(1,4,6)
d = data.frame(x1 = c(4,-1,3), x2 = c(3,9,8), x3 = c(4,-4,-2))

我想对数据进行线性回归:

fit = lm(y ~ d$x1 + d$x2 + d$y2)

有没有办法写出公式,这样我就不必写出每个单独的协变量?例如

fit = lm(y ~ d)

(我希望数据框中的每个变量都是协变量.)我这样问是因为我的数据框中有50个变量,所以我想避免写出x1 + x2 + x3 + etc个.

推荐答案

公式中有一个特殊的标识符,可以用来表示所有变量,它是.标识符.

y <- c(1,4,6)
d <- data.frame(y = y, x1 = c(4,-1,3), x2 = c(3,9,8), x3 = c(4,-4,-2))
mod <- lm(y ~ ., data = d)

您也可以这样做,使用除一个变量之外的所有变量(在本例中,x3不包括):

mod <- lm(y ~ . - x3, data = d)

从技术上讲,.意味着all variables 101 already mentioned in the formula.例如

lm(y ~ x1 * x2 + ., data = d)

式中,.仅引用x3,因为x1x2已在公式中.

R相关问答推荐

根据R中另一个数据集的顺序重新排序数据集的列

如何生成包含可能条目列表而不是计数的表?

R通过字符串中的索引连接数据帧r

如何使用文本表达来子集数据

R:如何自动化变量创建过程,其中我需要基于ifelse()为现有变量的每个级别创建一个单独的变量

如何从其他前面列中减go 特定列的平均值?

如何使用rmarkdown和kableExtra删除包含折叠行的表的第一列的名称

带有叠加饼图系列的Highmap

随机森林回归:下拉列重要性

根据模式将一列拆分为多列,并在R中进行拆分

计算具有奇数日期的运行金额

在R中使用数据集名称

为什么舍入POSIXct会更改能力以匹配等效的POSIXct?

在R中按行按列范围查找最大值的名称

仅 Select 超过9行的CSV文件

如何根据数据帧中的值从该数据帧中提取值?

如何在R中平滑地绘制线图(不拟合)?

计算来自单独分组的分幅的值的百分位数

如何在GALT包的函数&geom_x样条线中调整线宽

整理ggmosaic图的标签