本篇文章由 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

说点什么吧...

qZMtmT.png网站备案号:ICP备16046599号-1