是什么之间的区别"+"在GGPLOT2运营商和"%>%" 在magrittr操作?
我被告知它们是相同的,但是如果我们考虑以下脚本.
library(magrittr)
library(ggplot2)
# 1. This works
ggplot(data = mtcars, aes(x=wt, y = mpg)) + geom_point()
# 2. This works
ggplot(data = mtcars) + aes(x=wt, y = mpg) + geom_point()
# 3. This works
ggplot(data = mtcars) + aes(x=wt, y = mpg) %>% geom_point()
# 4. But this doesn't
ggplot(data = mtcars) %>% aes(x=wt, y = mpg) %>% geom_point()
Run Code Online (Sandbox Code Playgroud) 如果提供的不是数字,+通常会抛出non-numeric argument to binary operator.但它适用于ggplot2,将情节粘贴在一起.同时,它在ggplot2的上下文之外保留其常用功能(例如,作为算术运算符或公式运算符),因此其ggplot2版本与这两者中的任何一个都不冲突.
我希望了解如何以+这种方式表现.浏览ggplot2 github repo,我找到了函数定义+.gg,%+%但它并没有让我更清楚.
我会很高兴指向ggplot2包中执行此操作的代码,或者对如何完成此操作的一般化解释.
我开始在 R 中实现一种数字。我有一个函数可以对它们进行加法、乘法等。现在我想为这些数字的算术做一个方便的接口。也就是说,我不希望用户键入multiply(x, add(y, z)),而是x * (y + z)等等。就效率而言,实现此目的的最佳方法是什么,S3 还是 S4?我已经在 S4 中为一个包( lazyNumbers )做了这样的算术实现,这有点长,有点“冗长”。S3是不是更舒服?我还不知道如何使用 S3,但如果需要的话我会学习。