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
看,这回成功了吧。 这个问题解决,开始下一部分。