在R的Syntax帮助页面的“详细信息”部分中:
一元加/减是多少?
R中一元加号(+)/减号(-)与二进制加法(+)或减法(-)之间的区别在哪里?
最佳答案
一个运算符的好坏告诉它要运算多少个参数。一元对单个自变量起作用,二元对两个自变量起作用,三元对三个自变量起作用,等等。
-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
的元素进行符号反转。加号运算符也是如此。必须小心,不要将加号
+
与sum
函数混淆。 +
在一个(作为一元运算符)或两个(作为二进制运算符)向量参数上操作逐元素,而sum
将其参数中存在的所有值相加。尽管sum
可以接受任意数量的参数:> sum
function (..., na.rm = FALSE) .Primitive("sum")
+
运算符仅使用一两个:> `+`(1, 2, 3)
Error in `+`(1, 2, 3) : operator needs one or two arguments
关于r - R中的一元加/减是多少?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27738943/