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

hli*_*nee 8 r ggplot2

我正在浏览Hadley Wickham的"R for Data Science",他~var在ggplot调用中使用它.

我理解y ~ a + bx,在哪里~描述了依赖变量和自变量之间的公式/关系,但是什么~var意思呢?更重要的是,为什么你不能只把变量本身?见下面的代码:

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

要么

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")
Run Code Online (Sandbox Code Playgroud)

Cal*_*You 5

它是特定于 的语法facet_wrap,其中可以给出公式作为变量关系的输入。从第一个参数的文档来看facets, :

由 vars() 引用并在行或列维度上定义分面组的一组变量或表达式。变量可以被命名(名称被传递给贴标机)。为了与经典界面兼容,也可以是公式或字符向量。使用单边公式 '~ab 或字符向量 c("a", "b")'。

所以我认为你现在可以只给出没有波浪号的变量名称,但你过去需要给出一个带有波浪号的单边公式。

  • 你能解释一下什么是单边公式吗? (3认同)
  • 使用“~”创建公式。单边公式只有一侧有变量,就像您的示例〜类一样。这些函数只是选择接受这种形式的输入,它并不意味着任何实际的方程,就像它在 lm 中的使用一样。它没有特定的含义,它只是意味着变量是相关的,但函数可以选择该关系的含义。 (3认同)

div*_*san 5

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

为了与经典界面兼容,行也可以是一个公式,在LHS(表格显示的)行和RHS(表格显示的)列;公式中的点用于表示该维度(行或列)上不应有分面。

所以facet_grid(. ~ var)只是意味着在变量上对网格进行分面var,分面分布在列上。它与facet_grid(col = vars(var)).

尽管看起来像 a formula,但它并没有真正用作公式:它只是一种以facet_grid代码可以清楚无误地解释的方式向 R 呈现多个参数的方式。