在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/

10-12 17:32