一、运算符和向量
向量化操作的优点是:运算符或者函数作用于向量中的每个元素,而无需显式编写循环语句。
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/
- 我的微信公众号
- 微信扫一扫
- 我的微信公众号
- 微信扫一扫
评论