继续学R:Vector(向量) Part 2, 多元素向量访问 & 计算长度

在之前的文章中,我学习了《多元素向量创建&类型》,学到了用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 TutorialR - 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))

好了,今天就水到这里了。

相关链接

H2
H3
H4
3 columns
2 columns
1 column
3 Comments