将算术运算符视为函数

时间:2015-10-26 15:22:16

标签: r function syntax

我已经读过R中的所有内容都是函数。所以我想知道“+”是否也是一个功能 如果我们能写出类似的东西:

xx <- c(1,2,3)
yy <- c(1,2,3,4,5,6)

# zz is the sum of the two lengths
zz <- +(if(exists("xx")) length(xx), if(exists("yy")) length(yy))

1 个答案:

答案 0 :(得分:21)

是的,你可以:

xx <- c(1,2,3)
yy <- c(1,2,3,4,5,6)

# zz is the sum of the two lengths
zz <- `+`(if(exists("xx")) length(xx), if(exists("yy")) length(yy))
#[1] 9

要调用没有语法上有效名称的对象(例如,如果执行+之类的操作,则会隐式调用函数1 + 2),您需要将该名称括在反引号(`)中或引号(“或')。

另见R Language Definition的第3.1.4节:

  

除了语法之外,应用运算符和调用函数之间没有区别。实际上,x + y可以等效地写成`+`(x,y)。请注意,由于'+'是非标准函数名称,因此需要引用它。

在您的代码中出现错误:

Error: unexpected ',' in "zz <- +(if(exists("xx")) length(xx),"

这是因为你没有调用(二进制)函数"+",而是调用一元运算符+,它不期望函数参数,因此将括号解释为“算术”运算符。这些之间不允许使用逗号。