构建列表子集
许多场合下,我们需要从列表中提取多个元素。由这些元素组成的列表构成了原列表
的一个子集。
构建一个列表子集,我们可以用单层方括号,就像提取向量和矩阵中元素一样。我们
可以取出列表中的一些元素,然后放到一个新的列表中。
这里方括号的用法与其在向量中的用法非常相似。我们可以用字符向量表示成分名称,
用数值向量表示成分位置,或用逻辑向量指定选择标准,来取出列表元素
① 。
l1["x"]
## $x
## [1] 1
l1[c("x", "y")]
## $x
## [1] 1
##
## $y
## [1] TRUE FALSE
l1[1]
## $x
## [1] 1
l1[c(1, 2)]
## $x
## [1] 1
##
## $y
## [1] TRUE FALSE
l1[c(TRUE, FALSE, TRUE)]
## $x
## [1] 1
##
① 使用[ ]提取成分时,返回列表的子集,还是一个列表;使用[[ ]]提取成分时,返回对应成分的元素。
## $z
## [1] "a" "b" "c"
总而言之,我们可以说,[[用来提取向量或列表中的一个元素,而[用来提取一个向
量或列表的子集。向量的子集是一个向量。同样的,列表的子集也是一个列表。