其他函数
R 中有许多和列表相关的函数。例如,如果我们不能确定一个对象是否是列表,可以
调用 is.list( )进行判断:
l2 <- list(a = c(1, 2, 3), b = c("x", "y", "z", "w"))
is.list(l2)
## [1] TRUE
is.list(l2$a)
## [1] FALSE
这里的 l2 是一个列表,但 l2$a 是一个数值向量而不是列表。
我们也可以调用 as.list( )函数将一个向量转换成一个列表:
l3 <- as.list(c(a = 1, b = 2, c = 3))
l3
## $a
## [1] 1
##
## $b
## [1] 2
##
## $c
## [1] 3
通过调用 unlist( ),可以很容易地将一个列表强制转换成一个向量。该函数基本
上对所有列表成分进行了转换,并把它们存储在一个类型兼容的向量中:
l4 <- list(a = 1, b = 2, c = 3)
unlist(l4)
## a b c
## 1 2 3
如果我们对一个混合了数值和文本的列表进行去列表化(unlist),则每个成分都会被
转换为其所能转换成的最近类型(closest type):
l4 <- list(a = 1, b = 2, c = "hello")
unlist(l4)
## a b c
## "1" "2" "hello"
这里的 l4$a 和 l4$b 都是数字,可以被转换为一个字符;但是,l4$c 是一个字符向
量,无法被转换为数值。因此,能够兼容这些元素的最近类型就是字符向量。