r - ggplot2 和其他函数之间的加号 (R)

标签 r ggplot2 operators

我正在尝试获取这个示例:

ggplot(mpg, aes(displ, hwy)) + geom_point()

有人可以解释一下这两个函数之间发生了什么吗?

ggplot2 是否重载“加”运算符?总结这2个结果是什么?它被分配给什么?它是 R 特定的功能,还是 ggplot2 特定的功能?它是一种管道吗?

最佳答案

@Richard Scriven 在注释中引用的函数定义定义于 plot-construction.r ,这可能会更清楚。您需要仔细查看源代码才能准确了解这两个(未导出的)函数的作用(调用的 LHS 是 theme 还是 ggplot 对象),但是这些名字应该会给你一个很好的主意。返回值是通过“添加”e2修改的e1

"+.gg" <- function(e1, e2) {
  # Get the name of what was passed in as e2, and pass along so that it
  # can be displayed in error messages
  e2name <- deparse(substitute(e2))

  if      (is.theme(e1))  add_theme(e1, e2, e2name)
  else if (is.ggplot(e1)) add_ggplot(e1, e2, e2name)
}

所以,是的,对于继承类 gg 的对象(所有 ggplot2 对象)来说,+ 是重载的。

我认为“管道”(@alistaire 的评论)是一个误导性的类比;这非常符合标准运营组通用的风格。

关于r - ggplot2 和其他函数之间的加号 (R),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38166708/

相关文章:

r - 比较两个向量的分布

html - 在 Rmarkdown 中用 HTML 文档在左侧添加目录

F# 自定义运算符优先级

c - while(scanf ("%d",&n),n) 是什么意思?

r - 合并行并保留基于另一列的值

r - 分组后如何统计某个条件的数据

r - 在ggplot2中叠加条形图

r - ggplot2/GGally 中的散点矩阵,没有密度图

r - 当我在 R 中绘制两个 "reverse"轴时,是否有 ggplot2 形式到 "y"只有一个轴(geom_bar())

java - 在java中将字符串转换为运算符(+*/-)