单变量前的波浪号(〜)是什么意思?

时间:2018-08-17 18:57:15

标签: r

我正在研究Hadley Wickham的“ R for Data Science”,他在ggplot调用中使用~var

我了解y ~ a + bx,其中~描述了因变量和自变量之间的公式/关系,但是~var是什么意思?更重要的是,为什么不能仅将变量本身放置?参见下面的代码:

ggplot(data = mpg) + 
  geom_point(mapping = aes(x = displ, y = hwy)) + 
  facet_wrap(~ class, nrow = 2)

demo <- tribble(
  ~cut,         ~freq,
  "Fair",       1610,
  "Good",       4906,
  "Very Good",  12082,
  "Premium",    13791,
  "Ideal",      21551
)

ggplot(data = demo) +
  geom_bar(mapping = aes(x = cut, y = freq), stat = "identity")

2 个答案:

答案 0 :(得分:2)

这是facet_wrap特有的语法,其中可以给出一个公式作为变量关系的输入。在第一个参数的文档中,facets

  

一组由vars()和   在行或列维度上定义构面组。的   变量可以被命名(名称被传递给labeller)。对于   与经典界面的兼容性,也可以是公式或   字符向量。使用单侧公式'〜a b或a   字符向量,c(“ a”,“ b”)'。

所以我认为您现在可以只给出不带波浪号的变量名,但是您曾经需要使用波浪号来提供单侧公式。

答案 1 :(得分:2)

ggplot只是利用formula结构来让用户决定要处理的变量。来自?facet_grid

  

为了与经典界面兼容,行也可以是一个公式,其中LHS上的(表格显示)行和RHS上的(表格显示)列;公式中的点用于指示此尺寸(行或列)上不应有小平面。

因此,facet_grid(. ~ var)仅意味着在变量var上刻面网格,这些刻面分布在列上。与facet_grid(col = vars(var))相同。

尽管看起来像formula,但实际上并没有用作公式:它只是一种以facet_grid代码可以清楚而明确地解释的方式向R提供多个参数的方式。 / p>