在R编程语言中使用〜(代字号)

时间:2013-02-20 09:27:58

标签: r r-faq

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

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

这个命令到底是做什么的,以及~(代字号)在命令中的作用是什么?

3 个答案:

答案 0 :(得分:171)

<-右侧的内容是formula对象。它通常用于表示统计模型,其中~左侧的内容是响应,而~右侧的内容是解释变量。所以在英语中你会说像“物种取决于萼片长度,萼片宽度,花瓣长度和花瓣宽度”

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


R

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

lattice包将它们用于specify the variables to plot ggplot2包将它们用于specify panels for plotting dplyr包将它们用于non-standard evaulation

答案 1 :(得分:76)

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中存在哪些变量但未在公式中明确提及,并将点替换为缺少的变量。

答案 2 :(得分:0)

一句话,

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

例如,在线性函数中,它将因变量与自变量分开,可以解释为“作为...的函数”。因此,当一个人的工资 (wages) 作为其受教育年限 (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 的函数。