R 中的运算符


2022年1月18日, Learn eTutorial
2643

在本教程中,您将学习运算符以及 R 编程语言中使用的不同类型的运算符。

什么是 R 运算符?

在 R 中,运算符与任何其他编程语言一样扮演着至关重要的角色。运算符是像 +、-、%、&、|、&&、<、<=、== 这样的特殊符号,它们在编程语言中执行某种数学运算。这些运算符需要特定的值,只有有了这些值,它们才能执行逻辑数学运算。这些值进一步被称为操作数

在程序中,运算符能够操作数据和变量。操作数是通过应用特定运算符来操作的对象。

R Variables

R 运算符有哪些类型?

R 编程中不同类型的运算符如下所列。

  1. 算术运算符
  2. 逻辑运算符
  3. 关系运算符
  4. 赋值运算符
  5. 其他运算符
R Variables

1. R 算术运算符

算术运算符对 R 中所有可用的基本数据类型(将在我们的下一个教程中讨论)执行基本的算术运算。算术运算包括

  • 加法
  • 减法
  • 乘法
  • 除法
  • 余数
  • 指数

算术运算汇总表

算术运算 运算符 用途 描述
加法 + (A+B) 将两个操作数 A 和 B 相加
减法 - (A-B) 从 A 中减去操作数 B
乘法 * (A*B) 将两个操作数 A 和 B 相乘
除法 / (A/B) 将两个操作数 A 和 B 相除
取模 %% (A%%B) 获取操作数 A 除以操作数 B 后的余数
%/% (A%/%B) 操作数 A 除以操作数 B 后的商
指数 ^ (A^B) 操作数 A 的操作数 B 次方

演示 R 中整数算术运算的程序


Arithmetic operators +   -   *   /   %%   %/%   ^

A <- 20       #value 20 assigned using leftward operator "<-" to variable A
B = 10        #value 10 assigned using EQUAL TO  operator "=" to variable B
print(A+B)    #Addition
print(A-B)    #subtraction
print(A*B)    #Multiplication
print(A/B)    #division
print(A%%B)   #Remainder
print(A%/%B)  #Quotient
print(A^B)    #power

 

输出


> print(A+B)    #Addition
[1] 30
> print(A-B)    #subtraction
[1] 10
> print(A*B)    #Multiplication
[1] 200
> print(A/B)    #division
[1] 2
> print(A%%B)   #Remainder
[1] 0
> print(A%/%B)  #Quotient
[1] 2
> print(A^B)    #power
[1] 1.024e+13

演示 R 中向量算术运算的程序


# Arithmetic operators  +   -   *   /   %%   %/%   ^ with vectors

A <- c(10, 7, 7)
B <- c(0, 9, 4)

print(A+B)    #Addition
print(A-B)    #subtraction
print(A*B)    #Multiplication
print(A/B)    #division
print(A%%B)   #Remainder
print(A%/%B)  #Quotient
print(A^B)    #power

 

输出


[1] 10 16 11
[1] 10 -2  3
[1]  0 63 28
[1]       Inf 0.7777778 1.7500000
[1] NaN   7   3
[1] Inf   0   1
[1]        1 40353607     2401

注意: • NaN 表示“非数字” & Inf 表示“无穷大” • 它们用于复数(实部和虚部)和数值。• 两者都是 R 中的保留字

R 逻辑运算符

逻辑运算符执行诸如与、或、非之类的逻辑运算。使用逻辑运算符的逻辑运算结果总是分为两类,即真或假。像 a&b (a 与 b)、a&&b (a 与 b)、a|b (a 或 b) 等逻辑表达式被定义为如果为真则值为 1,如果为假则为 0。逻辑运算符的类型有

  • 与 ( &)
  • 或     (|)
  • 非 (!)
  • 长与 (&&)
  • 长或 (||)
R Variables

该图表示不同逻辑运算符的操作及其对应的输出,即 TRUE (1) 和 FALSE (0)。

  • & 类似于乘法 0 *0 =0 (F), 0*1 =0(F) 等。
  • | 类似于加法运算 0+0=0(F),0+1=1(T) 等。
  • ! 恰好相反,如果是 0,则结果为 1。

逻辑运算汇总表

逻辑运算 运算符 用途 描述
短  与   & (A&B) 元素级逻辑与运算符
短  或 | (A|B) 元素级逻辑或运算符
非   ! (A!B) 元素级逻辑非运算符
长 与     && (A&&B) 逻辑与运算符
长      或 || (A||B) 逻辑或运算符

演示 R 中整数逻辑运算符的程序


#Logical Operator
# & | ! && ||


a <- 0 # logical FALSE
b <- 2 # logical TRUE

print ( a & b ) # logical AND element wise
print ( a | b ) # logical OR element wise
print ( !a ) # logical NOT element wise
print ( a && b ) # logical AND consolidated for all elements
print ( a || b ) # logical OR consolidated for all elements

 

输出


[1] FALSE
[1] TRUE
[1] TRUE
[1] FALSE
[1] TRUE

短与和长与、或运算符的区别

逻辑运算符 描述
 &     | 短形式执行元素级比较
&&    || 长形式通过仅从左到右检查第一个元素来评估结果。

演示短与和长与、或运算符区别的程序


#Logical Operator
# & && ||   |

A <- c(3.5,TRUE,2+5i)   #vector A
B <- c(2.5,TRUE,3+2i)   #vector B
print(A&B)   
print(A&&B)
print(A|B)
print(A||B)

 

输出


[1] TRUE TRUE TRUE
[1] TRUE
[1] TRUE TRUE TRUE
[1] TRUE

在给定的程序中,A&B 评估每个元素,因此称为元素级比较,它与每个元素进行比较,并返回输出 TRUE TRUE TRUE

R Variables

在 A&&B 的情况下,从左到右比较并仅检查第一对元素。在下图中,比较了 3.5 && 2.5,其结果为 TRUE,因此在长形式中自动验证下一组为 TRUE,并返回 TRUE。在长或 (||) 的情况下,遵循相同的过程。逻辑运算符是 || 而不是 &&,它根据上述真值表产生结果。

R Variables

R 关系运算符

在 R 中,关系运算符比较元素之间的关系。关系运算符的输出为 TRUE (1) 或 FALSE (0)。关系运算符的类型有

  • 小于   
  • 大于
  • 等于 
  • 小于等于
  • 大于等于
  • 不等于

关系运算符汇总表 

关系运算 运算符 用途 描述
小于  (A<B) 检查操作数 A 是否小于操作数 B
大于   (A>B) 检查操作数 A 是否大于操作数 B
等于   == (A==B) 检查操作数 A 是否等于操作数 B
小于等于    <= (A<=B) 检查操作数 A 是否小于或等于操作数 B
大于等于   >= (A>=B) 检查操作数 A 是否大于或等于操作数 B
不等于   != (A!=B) 检查操作数 A 是否不等于操作数 B

演示 R 中关系运算符的程序


#Relational Operators
# <  >  == <= >=  != 

A <- 20       #value 20 assigned using leftward operator "<-" to variable A
B = 10        #value 10 assigned using Equal to operator "=" to variable B
print(AB)    #Greater than
print(A==B)    #equal to 
print(A<=B)    #Less than equal to
print(A>=B)   #Greater than equal to 
print(A!=B)  #Not equal to

 

输出


> print(A print(A>B)    #Greater than
[1] TRUE
> print(A==B)    #equal to 
[1] FALSE
> print(A<=B)    #Less than equal to
[1] FALSE
> print(A>=B)   #Greater than equal to 
[1] TRUE
> print(A!=B)  #Not equal to
[1] TRUE

R 赋值运算符

“赋值”一词本身就表示了操作的性质。赋值运算符被认为是用于赋值的。赋值运算符的类型有

  • 向左赋值运算符  <-  ,<<-
  • 向右赋值  运算符 ->,->>
  • 等于       =

赋值运算符汇总表

赋值运算 运算符 用途 描述
向左运算符

<-

<<-

(A<-3) (A<<-3)

· 值 3 被赋给 A。

· 在这两种情况下,都将右侧的值赋给左侧的变量。

· 区别在于变量的作用域。赋值运算符 <<- 的行为类似于全局作用域。

向右运算符

->

->>

(1->B)

(1->>B)

· 将左侧的值赋给右侧。

· ->> 赋值具有全局作用域。

等于 = (A=8) 将右侧的值赋给左侧的操作数/变量。

使用赋值运算符的程序


# R Assignment Operators
a = 7.8
print ( a )

a <- FALSE
print ( a )

454 -> a
print ( a )

a <<- 2.9
print ( a )

6+3i ->>a
print ( a )

 

输出


[1] 7.8
[1] FALSE
[1] 454
[1] 2.9
[1] 6+3i

R 其他运算符

在 R 中,除了您到目前为止学到的运算符之外,还有某些运算符可以执行操作数据的特定操作。如下表所示

运算符 用途 描述
:   (冒号) A:B 打印从操作数 A 到操作数 B 的一系列数字
%in% A%in%B 确定元素 A 是否属于 B
%*% A%*%B 向量与其转置的乘积。

使用 R 其他运算符的程序


# R Miscellaneous Operators

a = 2:9
print ( a )


a = c(2, 7, 71)
b = 0
print ( b %in% a )


a = c(2, 7, 71)
b = 71
print ( b %in% a )

M = matrix(c(1,2,3,4), 2, 2, TRUE)
print ( M %*% t(M) )

 

输出


[1] 2 3 4 5 6 7 8 9
[1] FALSE
[1] TRUE
     [,1] [,2]
[1,]    5   11
[2,]   11   25

程序中的一些术语和语法现在可能不熟悉,只需理解概念,我们将在接下来的教程中深入探讨每个概念。