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

Ank*_*ita 174 r r-faq

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

myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
Run Code Online (Sandbox Code Playgroud)

这个命令究竟做了什么,~(tilde)在命令中的作用是什么?

Spa*_*man 184

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

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


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

lattice包使用它们来指定要绘制的变量.
ggplot2包使用它们来指定用于绘图的面板.
dplyr软件包使用它们进行非标准评估.


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

  • @Ankita,"尚未使用"在此上下文中表示未提及.在"物种〜."中,物种是唯一使用过的变量.因此,它取决于data.frame中的每个其他变量. (8认同)

ash*_*l16 11

总之,

\n

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

\n

例如,在线性函数中,它将因变量与自变量分开,并且可以解释为 \xe2\x80\x9cas 的函数。\xe2\x80\x9d 因此,当一个人\xe2\x80 \x99s 工资(工资)作为他们受教育年限(years_of_education)的函数,我们做了类似的事情,

\n
wages ~ 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

\n