df$item1 $iter1 [1] 1 $iter2 [1] 1 使用 do.call-6ren">
gpt4 book ai didi

r - 如何将嵌套列表转换为 R 中的数据框?

转载 作者:行者123 更新时间:2023-12-04 02:00:18 24 4
gpt4 key购买 nike

我有一个嵌套列表,我想转换为数据框。

iter1 <- list(item1 = 1, item2 = "a")
iter2 <- list(item1 = 1, item2 = "b")
All <- list(iter1 = iter1, iter2 = iter2)

df <- data.frame(t(sapply(All,c))) # Convert list to dataframe

但我的问题是 df$iter1返回一个列表而不是一个数据框,知道吗?
> class(df)
[1] "data.frame"

> df$item1
$iter1
[1] 1

$iter2
[1] 1

使用 do.call 转换时遇到同样的问题: df <- data.frame(do.call(rbind, All))但我无法弄清楚出了什么问题。

最佳答案

temp = unique(unlist(lapply(All, names)))
mydf = setNames(object = data.frame(lapply(temp, function(nm)
unlist(lapply(All, function(x) x[[nm]])))), nm = temp)

mydf
# item1 item2
#iter1 1 a
#iter2 1 b

或者
do.call(rbind, lapply(All, data.frame))
# item1 item2
#iter1 1 a
#iter2 1 b

或者
data.table::rbindlist(All, idcol = TRUE)
# .id item1 item2
#1: iter1 1 a
#2: iter2 1 b

关于r - 如何将嵌套列表转换为 R 中的数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47720363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com