将具有值的命名列表转换为向量

77

我有一个命名的值列表:

myList <- list('A' = 1, 'B' = 2, 'C' = 3)

我想要一个值为 1:3 的向量。

我无法想象在不定义函数的情况下如何提取这些值。是否有我不知道的更简单的方法?

library(plyr)
myvector <- laply(myList, function(x) x)

是否有类似于myList$Values的方法可以去除名称并将其作为向量返回?

3个回答

152

使用unlist函数,使用use.names = FALSE 参数。

unlist(myList, use.names=FALSE)

1
请注意,即使myList的元素length()!=1unlist也会默默地工作:unlist(list(1, 2, 3:4)) == c(1, 2, 3, 4)。这与OP plyr解决方案和仅使用as.integer(myList)不同,可能不是您想要/期望的。 - jan-glx

21

purrr::flatten_*() 也是一个不错的选择。这些 flatten_* 函数会添加一些简单的检查并确保类型安全。

myList <- list('A'=1, 'B'=2, 'C'=3)

purrr::flatten_dbl(myList)
## [1] 1 2 3

5
默认情况下,flatten()和unlist()都会删除NULL元素。有没有方法可以保留它们? - Graeme Prentice-Mott

8
这可以通过在使用as.vector之前使用unlist来完成。结果与使用参数use.names=FALSE相同。
as.vector(unlist(myList))

7
调用两个函数而不是一个的优势是什么? - Rich Scriven

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接