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


187

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

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

该命令的作用是什么~?命令中(波浪号)的作用是什么?


愿意分享本教程的链接吗?听起来不错。
cheesus

1
@cheeesus ...我正在通过案例研究来研究R中的电子书数据挖掘...您可以找到更多这样的有趣示例。
Ankita 2013年

Answers:


193

右边的东西<-formula物体。它通常用于表示统计模型,其中左侧的~是响应,而右侧的~是解释变量。因此,用英语您会说类似“种类取决于隔片长度,隔片宽度,花瓣长度和花瓣宽度”之类的内容

myFormula <-行的一部分将公式存储在一个名为的对象中,myFormula因此您可以在R代码的其他部分中使用它。


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

lattice包使用他们指定的变量情节
ggplot2包使用它们来进行绘图指定面板
dplyr包使用它们非标准的计算结果为



lazyeval小插图的“公式”部分很好地介绍了公式的
含义

82

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中存在哪些变量,但公式中未明确提及这些变量,并用那些丢失的变量替换点。


感谢@Ari B. Friedman的回答,但最后一行有点含糊,您在其中说“点表示“尚未使用的所有变量””。如果可以进一步说明。
Ankita

9
@Ankita,在此上下文中,“尚未使用”表示未提及。在中Species~.,物种是已使用的唯一变量。因此,它取决于data.frame中的每个其他变量。
x4nd3r

我不明白myFormula <- Species ~ . 。当点仍然被data.frame中的变量替代时?你能提供一个例子
srghma
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.