在 R 编程语言中使用 ~(波浪号)

Use of ~ (tilde) in R programming Language

提问人:Ankita 提问时间:2/20/2013 最后编辑:Karolis KoncevičiusAnkita 更新时间:3/24/2021 访问量:179862

问:

我在有关回归建模的教程中看到了以下命令:

myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width

这个命令到底是做什么的,(波浪号)在命令中的作用是什么?~

R-常见问题 R-公式

评论

0赞 Jonas Sourlier 9/1/2013
想分享教程的链接吗?听起来很有趣。
2赞 Ankita 9/4/2013
@cheeesus......我正在通过案例研究在 R 中进行电子书数据挖掘......在那里,您可以找到更多此类有趣的例子。

答:

233赞 Spacedman 2/20/2013 #1

右边的东西是一个公式对象。它通常用于表示统计模型,其中左边的东西是响应,右边的东西是解释变量。所以在英语中,你会说“物种取决于萼片长度、萼片宽度、花瓣长度和花瓣宽度”。<-~~

该行的部分将公式存储在一个被调用的对象中,以便你可以在 R 代码的其他部分使用它。myFormula <-myFormula


R 中公式对象的其他常见用法

该包使用它们来指定要绘制的变量
该软件包使用它们来指定用于打印的面板
该软件包将它们用于非标准真空。
latticeggplot2dplyr

评论

1赞 IRTFM 7/9/2016
对于稍微更广泛的讨论:stackoverflow.com/questions/8055508/the-tilde-operator-in-r/......
0赞 RobinL 6/4/2017
懒惰小插图的“公式”部分很好地介绍了什么是公式
96赞 Ari B. Friedman 2/20/2013 #2

R 定义用于公式的(波浪号)运算符。公式有各种各样的用途,但也许最常见的是回归:~

library(datasets)
lm( myFormula, data=iris)

help("~")或者会教你更多。help("formula")

@Spacedman涵盖了基础知识。让我们讨论一下它是如何工作的。

首先,作为一个运算符,请注意它本质上是一个函数的快捷方式(有两个参数):

> `~`(lhs,rhs)
lhs ~ rhs
> lhs ~ rhs
lhs ~ rhs

这有助于了解用于例如 家庭命令。apply

其次,您可以将公式作为文本进行操作:

oldform <- as.character(myFormula) # Get components
myFormula <- as.formula( paste( oldform[2], "Sepal.Length", sep="~" ) )

第三,您可以将其作为列表进行操作:

myFormula[[2]]
myFormula[[3]]

最后,有一些关于公式的有用技巧(更多信息见):help("formula")

myFormula <- Species ~ . 

例如,上面的版本与原始版本相同,因为圆点表示“所有尚未使用的变量”。这将查看您在最终模型调用中使用的 data.frame,查看 data.frame 中存在哪些变量但公式中未明确提及,并将点替换为那些缺少的变量。

评论

0赞 Ankita 2/20/2013
感谢 B. Friedman @Ari回答,但最后一行有点模棱两可,你说“点表示”所有尚未使用的变量”。如果你能进一步说明它。
9赞 x4nd3r 10/5/2013
@Ankita,此处的“尚未使用”是指未提及。在 中,物种是唯一使用的变量。因此,它取决于 data.frame 中的所有其他变量。Species~.
0赞 srghma 3/13/2020
我不明白。什么时候 dot 仍然被 data.frame 中的变量替换?您能否举个例子myFormula <- Species ~ .
10赞 ashraful16 3/21/2021 #3

一句话,

The tilde(~) separates the left side of a formula with the right side of the formula.

例如,在线性函数中,它将因变量与自变量分开,并且可以解释为“作为函数”。因此,当一个人的工资(工资)与他们的受教育年限(years_of_education)成函数时,我们会做这样的事情,

wages ~ years_of_education

这里

 Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width

这意味着,是 的函数。SpeciesSepal Length, Sepal Width, Petal Length and Petal Width