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

Baz*_*man 0 r lm

我在这个链接中展示了如何使用lm()数据框

在R中使用lm的正确方法

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

是否有更多的这种添加的.y ~呢,还是仅仅代表着你已经从向量输入到数据帧输入感动?

Rei*_*son 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
Run Code Online (Sandbox Code Playgroud)

忽略上面的值; 重要的是模型中有两个术语(加上拦截),取自names(df)不包含的一组y.这与写出完整的公式完全相同

mod <- lm(y ~ A + B, data = df)
Run Code Online (Sandbox Code Playgroud)

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

这个问题出现在另一个地方update(),其中第二个参数是一个公式,一个.用来表示" 已经存在的东西 ".例如:

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

R> coef(update(mod, . ~ . - B))
(Intercept)           A 
    -0.8156      0.5919
Run Code Online (Sandbox Code Playgroud)

因此,第一个.,左边的~扩展为" 保持现有的响应变量y ",而第二个.,右边~扩展为A + B,因此我们A + B - B取消了A.