我在此链接中展示了如何将lm()
与数据框一起使用
然而(对于R来说是全新的)我对systax还有点不清楚?
是否有更多.
添加到y ~
,还是只是表示您已从矢量输入移到数据框输入?
答案 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
。