我已经读过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))
答案 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),"
这是因为你没有调用(二进制)函数"+"
,而是调用一元运算符+
,它不期望函数参数,因此将括号解释为“算术”运算符。这些之间不允许使用逗号。