R的基础运算

数据大师
数据大师
数据大师
292
文章
0
评论
2021-08-1214:26:50 评论 69 2295字
摘要

R 中的算术运算符包括:加 (+)、减(-)、乘(*)、除(/)、整除(%/%)、取余(%%)、乘方(^),除了可以直接作用于两个数字,还可以对向量进行运算。

 

一、运算符和向量

向量化操作的优点是:运算符或者函数作用于向量中的每个元素,而无需显式编写循环语句。

c 函数可以把一系列的值拼接起来创建为向量。

c(1, 3, 5, 7, 9) + 1>> [1] 2 4 6 8 10

c(2, 4, 6, 8, 10) - 2>> [1] 0 2 4 6 8

1:10 %/% 3>> [1] 0 0 1 1 1 2 2 2 3 3

1:10 %% 3>> [1] 1 2 0 1 2 0 1 2 0 1

冒号运算符:创建一个从某个数值开始到另一个数值结束的向量,向量既可以按 1 递增,也可以按 1 递减,取决于首尾哪个值更大。1:5>> [1] 1 2 3 4 5

-8:-2>> [1] -8 -7 -6 -5 -4 -3 -2

16:8>> [1] 16 15 14 13 12 11 10 9 8

R 支持多种数学函数,如三角函数 (sin、cos、tan,以及相反的 asin、acos 和 atan)、对数和指数 (log 和 exp) 等,所有的函数都作用于向量,而不仅仅是单个值。cos(c(0, pi / 4, pi / 2, pi)) # pi是内置常数>> [1] 1.000000e+00 7.071068e-01 6.123234e-17 -1.000000e+00

log(c(10, 100, 1000, 10000), base = 10)>> [1] 1 2 3 4

exp(1:5)>> [1] 2.718282 7.389056 20.085537 54.598150 148.413159

R 中的关系运算符包括:大于 (>)、等于(==)、小于(<)、不等于(!=)、大于等于(>=)、小于等于(<=)。c(3, 4 - 1, 1 + 1 + 1) == 3>> [1] TRUE TRUE TRUE

(1:5) ^ 2 >= 16>> [1] FALSE FALSE FALSE TRUE TRUE

使用 == 来比较非整型变量可能会有问题,因为浮点数都是都以 32 位存储的,是一个近似值,所以根号 2 的平方并不等于2。sqrt(2) ^ 2 == 2>> [1] FALSE

sqrt(2) ^ 2 - 2>> [1] 4.440892e-16

R 提供了 all.equal 函数用于检查数字是否相等,它提供了一个容忍度 (默认情况下为 1.5e-8),小于此容忍度的误差将被忽略:all.equal(sqrt(2) ^ 2, 2)>> [1] TRUE

二、变量赋值

在 R 中,给变量赋值之前,并不需要事先声明变量,直接使用 <- 或 = 来给变量进行赋值,通常情况下,<- 是首选,赋值之后的变量即可参与运算。

变量名可以包含字母、数字、点和下划线,但不能以数字或下划线开头,系统的保留字也不能使用,如 if、for、else、while 等。

x <- 1:5y = 6:10

x + 2 * y - 3>> [1] 10 13 16 19 22

三、特殊数字

R 中有四种特殊值:Inf、-Inf、NaN 和 NA。前两个分别是正无穷和负无穷,NaN 是 not a number 的缩写,从字面意思看表示非数值,NA 是 not avaliable 的缩写,代表缺失值。

c(Inf + 1, Inf - 1, Inf - Inf)>> [1] Inf Inf NaN

c(1 / Inf, Inf / 1, Inf / Inf)>> [1] 0 Inf NaN

c(sqrt(Inf), sin(Inf))>> Warning in sin(Inf): 产生了NaNs>> [1] Inf NaN

c(NA + 1, NA * 5, NA + Inf)>> [1] NA NA NA

可使用函数来判断这些特殊值,需要注意的是:NaN 和 NA 既非有限值也非无限值。x <- c(0, Inf, -Inf, NaN, NA)

is.finite(x)>> [1] TRUE FALSE FALSE FALSE FALSE

is.infinite(x)>> [1] FALSE TRUE TRUE FALSE FALSE

is.nan(x)>> [1] FALSE FALSE FALSE TRUE FALSE

is.na(x)>> [1] FALSE FALSE FALSE TRUE TRUE

四、逻辑向量

TRUE 和 FALSE 是 R 中的布尔类型值,TRUE 为真,FALSE 为假,有三个运算符可以作用于布尔类型:

! 代表非操作& 代表与操作| 代表或操作x <- 1:10x >= 5>> [1] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE

!x>> [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

y <- 1:10 y %% 2 == 0>> [1] FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE

x & y >> [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

x | y>> [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

其他两个比较有用的处理逻辑向量的函数是 any 和 all,向量中至少包含一个 TRUE 值时,any 函数就会返回 TRUE,而向量中的所有值均为 TRUE 时,all 函数才会返回 TRUE:none_true <- c(FALSE, FALSE, FALSE)some_true <- c(FALSE, TRUE, FALSE)all_true <- c(TRUE, TRUE, TRUE)any(none_true)>> [1] FALSEany(some_true)>> [1] TRUEany(all_true)>> [1] TRUEall(none_true)>> [1] FALSEall(some_true)>> [1] FALSEall(all_true)>> [1] TRUE

 

End.

作者:数分进阶

本文为转载分享,如果涉及作品、版权和其他问题,请联系我们第一时间删除(微信号:lovedata0520)

更多文章前往首页浏览http://www.itongji.cn/

 

  • 我的微信公众号
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: