在之前的文章中,我学习了《多元素向量创建&类型》,学到了用c()函数
、冒号操作符(:)
、seq()
操作符等几种方式创建多元素向量访问,并且测试了多元素向量类型转换的优先级,得出raw > logical > integer >numeric >complex > character
的结论。
这节我们来继续学习。
多元素向量访问
下标单元素
和很多语言一样,多元素向量中的元素是可以使用下标来访问的,举例如下:
v<-c('a', 'b', 'c', 'd', 'e', 'f');
print(v[1])
一个有意思的事就这个下标是从1开始计算的,这个和C语言以及Python语言中的习惯不太一致。
下标多元素
另外一个有意思的地方是,可以同时访问多个多个元素
v<-c('a', 'b', 'c', 'd', 'e', 'f');
print(v[c(1, 2, 3)])
是不是有些神奇?
逻辑开关
除了上述两种访问方式外,还有其它访问方式,比如说使用逻辑类型来控制显示开关
v<-c('a', 'b', 'c', 'd', 'e', 'f');
print(v[c(TRUE, FALSE, TRUE, FALSE, TRUE, FALSE)])
写到这里不禁有一个疑问,如果传递的开关量比元素个数少,剩下的该如何显示?经过测试,我发现找不出来啥规律,行为诡异啊。所以如果用到了,还是老老实实传递相同个数的开关量吧,要么等以后找到规律再说。
下标 0
在R Tutorial的R - Vectors中,有这样一段示例:
# Accessing vector elements using 0/1 indexing.
t <- c("Sun","Mon","Tue","Wed","Thurs","Fri","Sat")
y <- t[c(0,0,0,0,0,0,1)]
print(y)
乍一看上边的示例,还以为是可以用0/1来做开关和TRUE/FALSE一样,实际上0/1并非开关量,还是下标,只是对于下标0而言,相当于空值。所以上述代码等价于:
t <- c("Sun","Mon","Tue","Wed","Thurs","Fri","Sat")
y <- t[c(1)]
print(y)
下标负数
还有一种方式就是下标传入负数
v<-c('a', 'b', 'c', 'd', 'e', 'f');
print(v[c(-2, -4)])
由此可见,负数相当于关掉对应位置的元素。
多元素向量长度
顺便考察了一下多元素向量长度如何计算,发现了一个length()
函数,示例如下:
v<-c('a', 'b', 'c', 'd', 'e', 'f');
print(length(v))
好了,今天就水到这里了。