我无法找到可以获取所有条目列表的列表?这是一个简单的例子,列表o列出:
listoflists <- list("A"=list(c(1,2,3),c(2,34,2)), "B" = list(c(1,2),c(2,3,2,1)), "C" = list(c("sdf",3,2)))
$A
$A[[1]]
[1] 1 2 3
$A[[2]]
[1] 2 34 2
$B
$B[[1]]
[1] 1 2
$B[[2]]
[1] 2 3 2 1
$C
$C[[1]]
[1] "sdf" "3" "2"
我只是通过使用for循环找到了这种悲伤的方式:
listofvectors <- list()
for (i in 1:length(listoflists)) {listofvectors <- c(listofvectors, listoflists[[i]])}
答案 0 :(得分:5)
我们可以使用c
中的连接函数(do.call
)来展平嵌套的list
res <- do.call(c, listoflists)
all.equal(listofvectors, res, check.attributes = FALSE)
#[1] TRUE
或者在评论中提到的@ d.b,unlist
recursive = FALSE
也可以使用
unlist(listoflists, recursive = FALSE)
答案 1 :(得分:0)
对于没有太多嵌套的具体示例,您也可以使用“purrr”包中的flatten
。
library(purrr)
flatten(listoflists)
但是,您没有指定更深层次嵌套列表所期望的行为。如果您想完全展平更深层次的嵌套列表,可以按LinearizeNestedList
查看 Akhil S Bhel 功能。
示例:
LL <- list(listoflists, listoflists)
str(flatten(LL)) ## Same as `do.call(c, LL)`
# List of 6
# $ A:List of 2
# ..$ : num [1:3] 1 2 3
# ..$ : num [1:3] 2 34 2
# $ B:List of 2
# ..$ : num [1:2] 1 2
# ..$ : num [1:4] 2 3 2 1
# $ C:List of 1
# ..$ : chr [1:3] "sdf" "3" "2"
# $ A:List of 2
# ..$ : num [1:3] 1 2 3
# ..$ : num [1:3] 2 34 2
# $ B:List of 2
# ..$ : num [1:2] 1 2
# ..$ : num [1:4] 2 3 2 1
# $ C:List of 1
# ..$ : chr [1:3] "sdf" "3" "2"
str(LinearizeNestedList(LL))
# List of 10
# $ 1/A/1: num [1:3] 1 2 3
# $ 1/A/2: num [1:3] 2 34 2
# $ 1/B/1: num [1:2] 1 2
# $ 1/B/2: num [1:4] 2 3 2 1
# $ 1/C/1: chr [1:3] "sdf" "3" "2"
# $ 2/A/1: num [1:3] 1 2 3
# $ 2/A/2: num [1:3] 2 34 2
# $ 2/B/1: num [1:2] 1 2
# $ 2/B/2: num [1:4] 2 3 2 1
# $ 2/C/1: chr [1:3] "sdf" "3" "2"
答案 2 :(得分:0)
下面的怎么样?
A = list(c(1,2,3),c(2,34,2))
B = list(c(1,2),c(2,3,2,1))
C = list(c("sdf",3,2))
joint_list <- c(A, B, C)