R语言编程艺术 第2章 向量(下)

2019-01-27  本文已影响55人  小洁忘了怎么分身

2.7NA与NULL值

NA:缺失值
向量中有一个缺失值NA,会导致mean()等函数计算出的结果均为NA。但可将na.rm参数设置为TRUE,可以跳过缺失值,计算其余元素。
NULL:空值,当作不存在
NULL的一个用法是在循环中创建向量,其中每次迭代都在这个向量上增加一个元素。

z <- NULL
for (i in 1:10) if (i %% 2 == 0) z <- c(z,i)

2.8 筛选

(1)“筛选索引”,就是你要筛选出来的元素需要满足的条件,比如x[x>8]
x[x>8] <- 0
注意,这种筛选方式不会自动排除NA。

x <- c(1,3,5,NA)
x[x>4]
#[1]5 NA

(2)subset()筛选,可以自动排除NA

x <- c(1,3,5,NA)
subset(x,x>4)
#[1]5

(3)which 返回TRUE的下标(位置)

which(x>4)
#3

在一个向量中找出满足一定条件的元素首次出现的位置which(x>4)[1]
在一个向量中找出满足一定条件的元素x[which(x>4)[1]]

2.9 向量化的ifelse()函数

ifelse(b,u,v),其中b是一个布尔值向量,而u和v是向量。
该函数返回的值也是向量,如果b[i]为真,则返回值的第i个元素为u[i],如果b[i]为假,则返回值的第i个元素为v[i]。

x<-1:10
ifelse(x%%2==0,5,12)

这段代码的意思是以1:10为输入,如果是偶数则输出5,是基数则输出12。

2.10 向量相等

除==外还可以用identical,是判断是否完全一致,注意默认的数字类型是双精度型,用:产生的则是整数型,不同数据类型来判断,会产生不相等的结果。

2.11 向量元素的名称

用names函数可以给元素命名。

2.12 关于c()的更多内容

如果传递到c()中的参数有不同的类型,则它们将被降级为同一类型,该类型最大限度地保留它们的共同特性。混合整数型和字符型,R会选择把它们都转换为字符型。另外,c()函数对向量有扁平化的效果,c(1,4,c(0.5,1))会生成1,4,0.5,1。

上一篇下一篇

猜你喜欢

热点阅读