我在一个关于回归模型的教程中看到了以下命令:
myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
这个命令到底做了什么,~
(波浪号) 在命令中的作用是什么?
R语言为公式定义了一个用于操作符号的“~”(波浪线)。公式有各种使用方法,但最常见的可能是用于回归:
library(datasets)
lm( myFormula, data=iris)
help("~")
或help("formula")
会教你更多。
@Spacedman已经讲解了基础知识。现在我们来讨论它的工作原理。
首先,作为运算符,需要注意的是它本质上是一个函数的快捷方式(有两个参数):
> `~`(lhs,rhs)
lhs ~ rhs
> lhs ~ rhs
lhs ~ rhs
这对于在 apply
系列命令中使用非常有帮助。
第二,你可以将公式作为文本进行操作:as text
oldform <- as.character(myFormula) # Get components
myFormula <- as.formula( paste( oldform[2], "Sepal.Length", sep="~" ) )
第三,您可以将其作为列表 进行操作:
myFormula[[2]]
myFormula[[3]]
最后,有一些使用公式的技巧很有帮助(详见help("formula")
):
myFormula <- Species ~ .
Species~.
中,只有 species 这个变量被使用了。因此,它取决于数据框中的每个其他变量。 - x4nd3rmyFormula <- Species ~ .
。当点仍然被数据框中的变量替换时?你能提供一个例子吗? - srghma总之,
波浪号
(~)用于将公式的左侧与右侧分隔开。
例如,在线性函数中,它可以将因变量与自变量分开,并可解释为“是...的函数”。因此,当一个人的工资(wages)是他们受教育年限(years_of_education)的函数时,我们可以做如下处理:
wages ~ years_of_education
在这里,
Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
这意味着,物种
是花萼长度、花萼宽度、花瓣长度和花瓣宽度
的函数。