在R的Syntax帮助页面的详细信息部分:
定义了以下一元和二元运算符。它们被列出来了 在优先组中,从最高到最低 [一些经营者]
- +一元减号和加号 [更多运营商]
+ - (二进制)加,减
什么是一元加/减?
R中的一元加(+)/减号( - )和二元加法(+)或减法( - )之间的区别在哪里?
答案 0 :(得分:12)
运算符的 arity 告诉它运行了多少个参数。一元可以在单个参数上工作,二元可以在两个参数上工作,三元可以在三个参数上工作,等等。
-a
^
这是一元减。它否定了它后面的单个参数/表达式的价值。您可能会将其视为像minus(a)
这样的函数调用,它会更改其参数的符号并将其作为结果返回。一元加上也存在,但它基本上是无操作。
a - b
^
这是二进制减号。它取其两个参数/表达式的值,并从第一个中减去第二个。您可能会将其视为一个函数调用,如minus(a,b)
,它接受两个参数并返回它们的区别。二进制加返回总和。
如@BondedDust所述,在R(以及支持向量处理的其他语言)中,一些运算符实际上采用向量参数,然后分别对每个元素执行操作。例如,一元减号 - 反转向量的所有元素:
> -(-2:2)
[1] 2 1 0 -1 -2
或作为函数调用:
> `-`(-2:2)
[1] 2 1 0 -1 -2
二进制减号按元素减去两个向量:
> 1:5 - 5:1
[1] -4 -2 0 2 4
或作为函数调用:
> `-`(1:5, 5:1)
[1] -4 -2 0 2 4
R中的减号运算符是一个带有两个参数的函数:
> `-`
function (e1, e2) .Primitive("-")
当两个参数都存在时,它执行二进制减号的操作,即从e2
逐个元素减去e1
。仅当e1
存在时,它将作为一元减号运算并对e1
的元素进行符号反转。
同样适用于plus运算符。必须小心,不要将加号运算符+
与sum
函数混淆。 +
在一个(作为一元运算符)或两个(作为二元运算符)向量参数上运行元素方式,而sum
对其参数中存在的所有值进行求和。虽然sum
可以采用任意数量的论点:
> sum
function (..., na.rm = FALSE) .Primitive("sum")
+
运算符只需要一两个:
> `+`(1, 2, 3)
Error in `+`(1, 2, 3) : operator needs one or two arguments