- 已编辑
本篇文章由 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语言中常见也常用的一些运算符。当然,因为这是一个“数学语言”,所以其用于处理数据的工具远不止这些,在下一期介绍函数的章节,会说明一些常用的数学函数。