何时使用`y~ .`和`lm()`

时间:2013-12-02 19:09:02

标签: r lm

我在此链接中展示了如何将lm()与数据框一起使用

Right way to use lm in R

然而(对于R来说是全新的)我对systax还有点不清楚?

是否有更多.添加到y ~,还是只是表示您已从矢量输入移到数据框输入?

1 个答案:

答案 0 :(得分:8)

公式中的.表示法通常用于表示“ data中尚未出现在公式中的所有其他变量”。请考虑以下事项:

df <- data.frame(y = rnorm(10), A = runif(10), B = rnorm(10))
mod <- lm(y ~ ., data = df)
coef(mod)

R> coef(mod)
(Intercept)           A           B 
    -0.8389      0.5635     -0.2160

忽略上述值;重要的是模型中有两个术语(加上截距),取自names(df)的不包含y的集合。这与写出完整的公式

完全相同
mod <- lm(y ~ A + B, data = df)

但涉及的打字较少。当模型公式可能包含许多变量时,这是一个方便的快捷方式。

其他地方出现在update(),其中第二个参数是公式,其中一个使用.来表示“已存在的内容”。例如:

coef(update(mod, . ~ . - B))

R> coef(update(mod, . ~ . - B))
(Intercept)           A 
    -0.8156      0.5919

因此.左侧的第一个~扩展为“保留现有的响应变量y ”,而第二个. },~右侧展开为A + B,因此A + B - B取消A