我在一个关于回归建模的教程中看到了以下命令:
myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
Run Code Online (Sandbox Code Playgroud)
这个命令究竟做了什么,~
(tilde)在命令中的作用是什么?
Ari*_*man 80
R定义了一个~
(代字号)运算符,用于公式.公式具有各种用途,但最常见的可能是回归:
library(datasets)
lm( myFormula, data=iris)
Run Code Online (Sandbox Code Playgroud)
help("~")
或者help("formula")
会教你更多.
@Spacedman已经涵盖了基础知识.我们来讨论它是如何工作的.
首先,作为一个运算符,请注意它本质上是一个函数的快捷方式(带有两个参数):
> `~`(lhs,rhs)
lhs ~ rhs
> lhs ~ rhs
lhs ~ rhs
Run Code Online (Sandbox Code Playgroud)
这有助于知道在例如apply
家庭命令中的使用.
其次,您可以将公式操作为文本:
oldform <- as.character(myFormula) # Get components
myFormula <- as.formula( paste( oldform[2], "Sepal.Length", sep="~" ) )
Run Code Online (Sandbox Code Playgroud)
第三,您可以将其作为列表进行操作:
myFormula[[2]]
myFormula[[3]]
Run Code Online (Sandbox Code Playgroud)
最后,有一些有用的公式配方(参见help("formula")
更多信息):
myFormula <- Species ~ .
Run Code Online (Sandbox Code Playgroud)
例如,上面的版本与原始版本相同,因为点表示"尚未使用的所有变量".这将查看您在最终模型调用中使用的data.frame,查看data.frame中存在哪些变量,但未在公式中明确提及,并将点替换为缺少的变量.
ash*_*l16 11
总之,
\nThe tilde
(~) separates the left side of a formula with the right side of the formula.
例如,在线性函数中,它将因变量与自变量分开,并且可以解释为 \xe2\x80\x9cas 的函数。\xe2\x80\x9d 因此,当一个人\xe2\x80 \x99s 工资(工资)作为他们受教育年限(years_of_education)的函数,我们做了类似的事情,
\nwages ~ years_of_education\n
Run Code Online (Sandbox Code Playgroud)\n这里,
\n Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width\n
Run Code Online (Sandbox Code Playgroud)\n这意味着Species
是 的函数 Sepal Length, Sepal Width, Petal Length and Petal Width
。