如何分组嵌套列表的元素?

时间:2018-01-04 09:48:52

标签: r

我想在R中对嵌套列表的元素进行分组,这样做的最佳解决方案是什么?

nest1 <- list(item1 = 1, item2 = "a")
nest2 <- list(item1 = 3, item2 = "b")
li <- list(nest1, nest2)
> li
[[1]]
[[1]]$item1
[1] 1

[[1]]$item2
[1] "a"


[[2]]
[[2]]$item1
[1] 3

[[2]]$item2
[1] "b"

我想要实现的是这样的:

[[1]]
[[1]]$item1
[[1]] 1 3

[[1]]$item2
[[1]] "a" "b"

我在几个方面尝试使用lapply,但它没有给出预期的结果。

lapply(li, "[[", c("item1", "item2"))

2 个答案:

答案 0 :(得分:4)

使用base:

as.list(do.call(rbind, lapply(li, data.frame, stringsAsFactors = FALSE)))

# $item1
# [1] 1 3
# 
# $item2
# [1] "a" "b"

答案 1 :(得分:3)

我们可以使用transpose

library(purrr)
transpose(li) %>%
     map(~unlist(., recursive = FALSE)) %>%
     list()
#[[1]]
#[[1]]$item1
#[1] 1 3


#[[1]]$item2
#[1] "a" "b"

或使用base R

v1 <- unlist(li)
list(lapply(split(unname(v1), names(v1)), type.convert, as.is = TRUE))