R语言统计分析与应用-第二章-3

书接上文,上回讲到了因子,现在继续讲列表

6.列表

列表就是个大杂烩,可以整合很多对象到单个对象下面。比如,某个列表可能包含了很多向量矩阵数据框什么的,甚至可以包含其他列表。创建列表使用list()函数。

#当然这个只是个实例,肯定运行不出东西的
#为避免Rmd报错,注释掉好了
#Mylist <- list(object1, object2)

下面这个才是栗子(没错,就是栗子):

a <- "list example"
x <- c(1,2,3,4,5)
matrix <- matrix(1:20,nrow = 5,byrow = FALSE)
k <- c("one","two","four")
mylist <- list(a,x,matrix,k)
mylist
## [[1]]
## [1] "list example"
## 
## [[2]]
## [1] 1 2 3 4 5
## 
## [[3]]
##      [,1] [,2] [,3] [,4]
## [1,]    1    6   11   16
## [2,]    2    7   12   17
## [3,]    3    8   13   18
## [4,]    4    9   14   19
## [5,]    5   10   15   20
## 
## [[4]]
## [1] "one"  "two"  "four"
#想要查询某个元素怎么办
#使用双重方括号,在方括号里面指明某个成分的数字或者名称
mylist[[3]]
##      [,1] [,2] [,3] [,4]
## [1,]    1    6   11   16
## [2,]    2    7   12   17
## [3,]    3    8   13   18
## [4,]    4    9   14   19
## [5,]    5   10   15   20
#这个等价于
mylist$matrix
## NULL
mylist[["matrix"]]
## NULL

上面这个例子就是创建了一个包含字符串(a),数值型向量(x),矩阵(matrix)以及字符型向量(k)的列表(mylist)。

下面是补充内容咯:

这时应该会有人觉得,诶?不是可以通过指明某个成分的名称来查询吗,但是最后两条语句为什么会出现“NULL”的返回值呢。 这是应为没有给各个成分起名字。列表的成分可以通过列表中成分的索引访问。在命名列表的情况下,它也可以使用名称来访问。

#给个成分命名
names(mylist) <- c("a","x","matrix","k")
#再用名字查询下试试
mylist$matrix
##      [,1] [,2] [,3] [,4]
## [1,]    1    6   11   16
## [2,]    2    7   12   17
## [3,]    3    8   13   18
## [4,]    4    9   14   19
## [5,]    5   10   15   20
mylist[["matrix"]]
##      [,1] [,2] [,3] [,4]
## [1,]    1    6   11   16
## [2,]    2    7   12   17
## [3,]    3    8   13   18
## [4,]    4    9   14   19
## [5,]    5   10   15   20

看,这回成功了吧。 这个问题解决,开始下一部分。

Avatar
Dr.二哈
在读苦逼科研狗

研究方向:脂质营养,业余时间自学R。

相关