如果我理解正确的话,R中的波浪号(~)通常表示匿名函数或公式.在ggplot2中,您可以使用facet_wrap()根据具有多个级别的因子变量将曲线图分割为多个面.有两种不同的方式来表达这一点,它们都会产生类似的结果:

# load starwars and tidyverse
library(tidyverse)
data(starwars)

~分:

ggplot(data = starwars, mapping = aes(x = mass)) + 
   geom_histogram(fill = "blue", alpha = .2) + 
   theme_minimal() + 
   facet_wrap( ~ gender, nrow = 1)

使用vars():

ggplot(data = starwars, mapping = aes(x = mass)) + 
  geom_histogram(fill = "blue", alpha = .2) + 
  theme_minimal() + 
  facet_wrap( vars(gender), nrow = 1)

ggplot2中的vars()~是如何等同的?~如何以类似或等同于其在R中作为匿名函数或公式的典型用法的方式使用?它看起来不像是这里的一个函数?有没有人能帮我弄清楚,vars()~代表facet_wrap()是什么意思?

推荐答案

这两个情节应该是相同的.

ggplot2中,vars()只是一个引号函数,它接受要计算的输入,在本例中是用于形成分面组的变量名.换句话说,您提供的列(通常是具有多个级别的变量)将被自动引用,然后在数据的上下文中进行计算,以形成小的曲线图面板.当您想要创建包装around facet_wrap()的函数时,我推荐使用vars()输入;这要容易得多.

另一方面,~是特定于facet_wrap()函数的语法.例如,facet_wrap(~ variable_name)并不意味着对某些公式化表达式的估计.相反,作为右侧有一个变量的单边公式,它就像是告诉R以当前形式向函数提供变量,这就是列本身的名称.这很令人困惑,因为我们通常使用~来表示$x$$y$之间的关系.在这个背景下,这是一种相同的事情.~左侧缺少的从属$y$变量表示行值,而~右侧的独立$x$变量表示列.注意,该函数可能已经知道$y$变量,该变量通常在aes()调用的内部指定.在facet_wrap(~ ...)上分层只是在$x$变量的每个维度(级别)上划分$y$值(行)的一种快捷方法.

R相关问答推荐

使用外部文件分配变量名及其值

矩阵的堆叠条形图,条形图上有数字作为标签

`lazy_dt`不支持`dplyr/across`?

哪一行和行和 Select 特定行,但是考虑到Nas

R:用GGPLATE,如何在两个独立的变量中制作不同形状的散点图?

如何在R中改变fviz_pca_biplot中圆的边界线的 colored颜色 ?

如何在ggplot2中创建多个y轴(每个变量一个)

如何计算增加10米(0.01公里)的行?

对R中的列表列执行ROW Mean操作

如何创建直方图与对齐的每月箱?

从字符串列中的向量中查找第一个匹配的单词

如何使用ggsurvfit包更改风险表中的标签名称?

对数据帧中的大量组合执行Kruskal-Wallis测试

如何阅读带有方括号的文件?

如何使用str_Detect计算并返回列表中检测到的字符串?

将一个二次函数叠加到一个被封装为facet的ggplot2对象的顶部

修改gratia包(R)中compare_smooths函数的绘图

保存GggPlot对象以在不同数据集上使用

从给定行中,如何 Select R中的前几行?

按不同的百分比将货币分配到多个组中,总和始终等于原始合计