本篇文章由 VeriMake 旧版论坛中备份出的原帖的 Markdown 源码生成
  
 
原帖标题为:R 语言 | 运算符  
原帖网址为:https://verimake.com/topics/221 (旧版论坛网址,已失效)
  
 
原帖作者为:dawdler(旧版论坛 id = 64,注册于 2020-08-17 14:01:22)  
原帖由作者初次发表于 2021-05-26 12:38:54,最后编辑于 2021-05-26 12:38:54(编辑时间可能不准确)
  
 
截至 2021-12-18 14:27:30 备份数据库时,原帖已获得 345 次浏览、0 个点赞、0 条回复
  
  
  
R语言
运算符
1. 赋值运算符
在其它语言中,最常见的就是=作为赋值符号,但是R语言类似于一个数学语言,因此它的赋值符号与数学学习中见到的伪代码很相似,是一个左箭头<-,在形式上更适合数学工作者。不过,为了便于操作,在新的版本中也支持=作为赋值符。  
注意:目前没有找到具体说明R从哪个版本开始支持了=赋值,本教程习用的是4.0.0版本。
  
    
#leftward assignment
#左赋值的三种合法表达
x <- c(1,2,3,4)
y = c(2,3,4,5)
z <<- c(3,4,5,6)
#rightward assignment
#右赋值的两种合法表达
c(5,4,3,2) -> w
c(4,3,2,1) ->> v
#以上都是语法正确的赋值方法,最常见的是<-和=
2. 数学运算符
以下是常见的一些数学运算,包括加减乘除、整除、整除求余、乘方等,在优先级上也符合通用的计算习惯:
  
v <- c(2,4,6,8)
t <- c(1,3,5,7)
#basic operators
 #加减乘除
print(v+t)
print(v-t)
print(v*t)
print(v/t)
 #remainder
print(v%%t) #求余数
 #quotient
print(v%/%t) #求商
 #power
print(v^t) #求幂
#priority
print(1+2*3)
print((1+2)*3)
print(1-4*0.5^3)
print(8/3%%2)
  
以上代码的输出结果为:
    > print(v+t)
    [1]  3  7 11 15
    > print(v-t)
    [1] 1 1 1 1
    > print(v*t)
    [1]  2 12 30 56
    > print(v/t)
    [1] 2.000000 1.333333 1.200000 1.142857
    > 
    > print(v%%t) #remainder
    [1] 0 1 1 1
    > print(v%/%t) #quotient
    [1] 2 1 1 1
    > print(v^t) #power
    [1]       2      64    7776 2097152
    > 
    > print(1+2*3)
    [1] 7
    > print((1+2)*3)
    [1] 9
    > print(1-4*0.5^3)
    [1] 0.5
    > print(8/3%%2)
    [1] 8
3. 关系运算符
R语言中的关系运算符主要用于比较,在向量的比较中,解释器将第一向量与第二向量的相对应的每个元素进行比较,结果返回一个布尔值。
  
v <- c(2,4,6,8)
t <- c(1,3,5,7)
#relational operator
print(v>t)
print(v<=t)
print(v==t)
print(v!=t)
以上代码的输出结果为:
    > print(v>t)
    [1] TRUE TRUE TRUE TRUE
    > print(v<=t)
    [1] FALSE FALSE FALSE FALSE
    > print(v==t)
    [1] FALSE FALSE FALSE FALSE
    > print(v!=t)
    [1] TRUE TRUE TRUE TRUE
4. 逻辑运算符
以下是R语言中支持的一些逻辑运算符:
	#大于1的数字都为TRUE
    a <- c(6, FALSE, FALSE, 1+2i)
    b <- c(0, TRUE, FALSE, 2+3i)
    #logical operator
    #comparing each element
    #向量中的每个元素依次进行比较
    print(a&b)
    print(a|b)
    print(!a)
    #comparing the first element
    #&&和||只对第一个元素进行比较
    print(a&&b)
    print(a||b)
以上代码的输出结果为:
    > print(a&b)
    [1] FALSE FALSE FALSE  TRUE
    > print(a|b)
    [1]  TRUE  TRUE FALSE  TRUE
    > print(!a)
    [1] FALSE  TRUE  TRUE FALSE
    > 
    > print(a&&b)
    [1] FALSE
    > print(a||b)
    [1] TRUE
4. 其他运算符
以下是一些在R语言中比较常见的特殊运算符:
    #冒号常用于创建一个连续的数列,然后以向量的形式输出
    v1 <- 2:8
    print(v1)
#(a %in% b), a is in b?
#用于查看某元素在不在指定向量内
u1 <- 8
u2 <- 12
print(u1 %in% v1)
print(u2 %in% v1)
#matrix operator
#transpose multiplication
#%*%常用于矩阵与其转置矩阵相乘
m = matrix(c(2,4,6,8,10,12), nrow=2, ncol=3, byrow=TRUE)
print(t(m))
t = m %*% t(m)
print(t)
以上代码的输出结果为:
    > v1 <- 2:8
    > print(v1)
    [1] 2 3 4 5 6 7 8
    > 
    > #(a %in% b), a is in b?
    > u1 <- 8
    > u2 <- 12
    > print(u1 %in% v1)
    [1] TRUE
    > print(u2 %in% v1)
    [1] FALSE
    > 
    > #matrix operator
    > 
    > #multiplication
    > m = matrix(c(2,4,6,8,10,12), nrow=2, ncol=3, byrow=TRUE)
    > print(t(m))
         [,1] [,2]
    [1,]    2    8
    [2,]    4   10
    [3,]    6   12
    > t = m %*% t(m)
    > print(t)
         [,1] [,2]
    [1,]   56  128
    [2,]  128  308
以上就是R语言中常见也常用的一些运算符。当然,因为这是一个“数学语言”,所以其用于处理数据的工具远不止这些,在下一期介绍函数的章节,会说明一些常用的数学函数。
  
相关资源:https://www.runoob.com/r/r-basic-operators.html