从列表中提取元素
有许多方法可以提取列表中的元素。最常用的方法是使用美元符号$,通过成分的名称
来提取列表元素的值。
l1 <- list(x = 1, y = c(TRUE, FALSE), z = c("a", "b", "c"), m = NULL)
l1$x
## [1] 1
l1$y
## [1] TRUE FALSE
l1$z
## [1] "a" "b" "c"
l1$m
## NULL
注意,如果访问一个不存在的成分 m,将会返回 NULL。
或者,我们可以在双层方括号中输入一个数字 n,来提取列表中第 n 个成分的值。比
如,通过以下方法取出列表 l1 中第 2 个成分的值:
l1[[2]]
## [1] TRUE FALSE
也可以在双层方括号中输入一个列表成分的名称,以取出对应元素的值,效果类似于
美元符号:
l1[["y"]]
## [1] TRUE FALSE
使用双层方括号来提取列表中的值可能会更加灵活,因为在计算之前我们有时可能不
知道需要取出哪个元素:
member <- "z" # 你可以随时改变想要取出的成分
l1[[member]]
## [1] "a" "b" "c"
这里在括号中使用了一个可即时赋值的单元素字符向量。但是为什么我们要用双层方
括号呢?为什么不再使用单层方括号了呢?