+
通常会在提供除数字以外的其他内容时抛出non-numeric argument to binary operator
。但它适用于ggplot2,将情节粘贴在一起。同时,它在ggplot2的上下文之外保留其通常的功能(例如作为算术或公式运算符),因此它的ggplot2版本与这两者中的任何一个都不冲突。
我希望了解如何使+
以这种方式行事。浏览ggplot2 github repo,我找到了+.gg
和%+%
的函数定义,但它并没有让我更清楚。
我很高兴指向ggplot2包中执行此操作的代码,或者对如何执行此操作的一般化解释。
答案 0 :(得分:8)
如果您剖析+.gg
我们有:
> ggplot2:::`+.gg`
function (e1, e2)
{
e2name <- deparse(substitute(e2))
if (is.theme(e1))
add_theme(e1, e2, e2name)
else if (is.ggplot(e1))
add_ggplot(e1, e2, e2name)
}
此外,add_theme
,您感兴趣的是add_ggplot
,可以ggplot2:::add_ggplot
访问。后者 - 一个长期但非常有组织的功能 - 揭示更多&#34;级联&#34;用于发送要添加的内容的功能。
话虽如此,R&#34;知道&#34;当使用&#34; +&#34;在类gg
的对象上,其功能适用(因为S3 classes)。您可以在ggplot2
GitHub repos中的ggproto.R
中找到起点,我认为大多数ggplot2
行为取决于此。
这就是你要找的东西吗?