粗略了浏览了一些各种R相关的文章,才惊觉R含金量最高的部分是统计分析部分,那部分我是一点不懂啊,所以真怀疑我能否坚持下去,姑且走着瞧吧,哪天写不下去了烂尾了,那也是意料之中的事情。
之前学了多元素向量,分三个小节学习了多元素向量的创建、访问以及操作。这篇文章我们来了解一下另外一种复杂的数据类型List/列表
创建列表
与多元素向量/Vertors不同,list可以同时容纳多种类型的元素。我们可以使用list()
来创建list,示例如下:
mylist<-list('a', 5.2, c(7, 8, 9), 3+4i)
print(class(mylist))
print(mylist)
通过示例可见,不同于vertors的类型取决于其内元素的类型,而list有自己的类型list
;另外不同于vertors只能包含相同类型的原子向量(不同类型会进行转换), list可以同时容纳多种类型的元素。
命名列表元素
我们可以通过names()
来给列表元素命名。示例如下:
mylist<-list('a', 5.2, c(7, 8, 9), 3+4i)
names(mylist)<-c('char', 'number', 'vertors', 'complex')
print(mylist)
访问列表元素
下标访问
通过下标访问,和通过下标访问多元素向量类似,例如:
mylist<-list('a', 5.2, c(7, 8, 9), 3+4i)
print(mylist[2])
print(mylist[c(1,2)])
print(mylist[c(TRUE, FALSE, TRUE, FALSE)])
print(mylist[c(-1,-2)])
命名访问
我们之前给list元素创建了名字,那么名字仅仅为了好看吗?答案是否定的,名字还可以用访问列表元素哦,例如:
mylist<-list('a', 5.2, c(7, 8, 9), 3+4i)
names(mylist)<-c('char', 'number', 'vertors', 'complex')
print(mylist$vertors)
print(mylist$number)
是不是很神奇?
vertors 命名访问
说到列表的命名访问,我不禁有一个疑问,vertors是否可以这样操作呢?光想没用,试试看:
v<-c(1, 2, 3, 4)
names(v)<-c('a', 'b', 'c', 'd')
print(v)
print(v['b'])
貌似可行呢?
重复命名
写到这,不禁又想一个问题,既然是对元素命名,那么命名应该是独一无二的,那么如果我们传入重复的命名会是如何呢?
v<-c(1, 2, 3, 4)
names(v)<-c('a', 'c', 'c', 'd')
mylist<-list('a', 5.2, c(7, 8, 9), 3+4i)
names(mylist)<-c('char', 'char', 'vertors', 'complex')
竟然都没有执行出错,那么访问命名元素时指向的到底是哪个元素呢?这个当课后题留给大家吧。说实话,可以给不同元素起相同命名,貌似有点坑啊。😳
今天就水到这里了,下期继续水。
相关链接
- 学R:准备工作
- 继续学R:安装软件包
- 继续学R:另一款在线R环境
- 继续学R:R的6大基本数据类型(原子向量)
- 继续学R:Vector(向量) Part 1, 多元素向量创建&类型
- 继续学R:Vector(向量) Part 2, 多元素向量访问 & 计算长度
- 继续学R:Vector(向量) Part 3, 多元素向量的操作(算术操作&排序)
- https://www.tutorialspoint.com/r/r_vectors.htm
This page is synchronized from the post: 继续学R:List(列表) Part 1, 创建列表&命名&访问