我想在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"))
答案 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))