我在这个链接中展示了如何使用lm()
数据框
然而(对R来说是全新的)我对systax还有点不清楚?
是否有更多的这种添加的.
到y ~
呢,还是仅仅代表着你已经从向量输入到数据帧输入感动?
.
公式中的符号通常用于表示"其中所有其他变量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
.