我有一个命名的值列表:
myList <- list('A' = 1, 'B' = 2, 'C' = 3)
我想要一个值为 1:3
的向量。
我无法想象在不定义函数的情况下如何提取这些值。是否有我不知道的更简单的方法?
library(plyr)
myvector <- laply(myList, function(x) x)
是否有类似于myList$Values
的方法可以去除名称并将其作为向量返回?
使用unlist
函数,使用use.names = FALSE
参数。
unlist(myList, use.names=FALSE)
purrr::flatten_*()
也是一个不错的选择。这些 flatten_*
函数会添加一些简单的检查并确保类型安全。
myList <- list('A'=1, 'B'=2, 'C'=3)
purrr::flatten_dbl(myList)
## [1] 1 2 3
as.vector
之前使用unlist
来完成。结果与使用参数use.names=FALSE
相同。as.vector(unlist(myList))
myList
的元素length()!=1
,unlist
也会默默地工作:unlist(list(1, 2, 3:4)) == c(1, 2, 3, 4)
。这与OPplyr
解决方案和仅使用as.integer(myList)
不同,可能不是您想要/期望的。 - jan-glx