这是一个非常基本的问题--但是很明显google并不擅长搜索像“%+%"这样的字符串。所以我的问题是--什么时候使用“%+%”和类似的字符串。我猜这是一种合并?。
编辑:好了,我相信我的问题已经得到了回答。%X%是某种二元运算符。所以现在我想我会在谷歌上搜索一下关于如何/何时使用这些运算符的知识。我的问题部分是受到昨天问题的启发--但只是在我在“学习R”博客上看到这个post之后。引发我问题的段落是这样的:
为了做到这一点,我们将创建一个包含年度总数的新数据框,然后将其与现有数据集合并(两个数据框中的变量名应该相同,这样才能正常工作)。
## add total immigration figures to the plot
total <- cast(df.m, Period ~ ., sum)
total <- rename(total, c("(all)" = "value"))
total$Region <- "Total"
df.m.t <- rbind(total, df.m)
c1 <- c %+% df.m.t
3条答案
按热度按时间slmsl1lt1#
最根本的原因是,如果你同时进行通用编程和数值计算,那么大量二元运算符是非常有用的。例如,如果你在二维数组中存储数字,你可能想把数组元素相乘,或者你可能想计算两个数组的矩阵乘积。在Matlab中,这两个运算符是
.*
和*
;在R中它们是*
和%*%
,Python有resistedattempts来添加新的运算符,所以numpy通过两个类来区分这两种乘积:阵列类按元素相乘,矩阵类按线性代数意义相乘。Python中的另一个例子是,对于列表,plus表示连接:
[1,2,3]+[4,5] == [1,2,3,4,5]
。但是对于numpy数组,plus表示元素加法:如果您的代码需要同时进行这两项操作,则必须在类之间进行转换或使用函数表示法,这可能会导致代码看起来很麻烦,尤其是涉及数学的地方。因此,有时候有更多的操作符可供使用会很方便,而您可能事先不知道某个特定应用程序调用的是哪种操作符。因此,R的实现者选择将任何名称如
%foo%
的操作符都视为操作符,下面是几个示例:%in%
是集合成员,%x%
是克罗内克积,%o%
是外积。关于将其发挥到极致的语言示例,请参见Fortress(规范的第16节从运算符名称的规则开始)。在您提到的博客文章中,作者使用了ggplot2图形包,它将
%+%
定义为两个情节元素的某种组合。(这是一个通用函数,因此您可以定义它对用户定义对象的含义),但它也定义了%+%
,以便您可以使用+
的ggplot 2含义如果您安装了ggplot 2,请键入require(ggplot2)
和?
%+%``以查看该操作符的文档,以及methods(
+)
,以查看新的定义已经被添加到+
。jq6vz3qz2#
没有一般定义的
%+%
。也许您看过this question from yesterday,其中一般来说,'percent-operator-percent'语法对于用户定义的两个参数的函数是开放的,但是对于
%+%
,没有(AFAIK)普遍接受的版本,您可以期望它出现在任何地方。eyh26e7m3#
根据我对手册的快速浏览,它可能是一个用户定义的中缀运算符,所以,很难说它的实际含义是什么...
我觉得是二进制加法。