我有一个名单列表
t <- list(list(a=1,b=2,c=3), list(a=3, b=2, c=1), list(a=2, b=3, c=1))
[[1]]
[[1]]$a
[1] 1
[[1]]$b
[1] 2
[[1]]$c
[1] 3
[[2]]
[[2]]$a
[1] 3
[[2]]$b
[1] 2
[[2]]$c
[1] 1
[[3]]
[[3]]$a
[1] 2
[[3]]$b
[1] 3
[[3]]$c
[1] 1
我希望获得一个命名列表或数据框,如此
$a
[1] 1 3 2
$b
[1] 2 2 3
$c
[1] 3 1 1
目前,我正在循环查看命名列表列表,将每个值添加到新的命名列表中。我怎么能在一行中做到这一点?
答案 0 :(得分:6)
也许以下其中一项适合您:
## As a data.frame
do.call(rbind, lapply(t, data.frame))
# a b c
# 1 1 2 3
# 2 3 2 1
# 3 2 3 1
## As a list
as.list(do.call(rbind, lapply(t, data.frame)))
# $a
# [1] 1 3 2
#
# $b
# [1] 2 2 3
#
# $c
# [1] 3 1 1