gpt4 book ai didi

r - 如何将键值对列表列表转换为数据帧?

转载 作者:行者123 更新时间:2023-12-03 07:54:21 25 4
gpt4 key购买 nike

请注意,我正在处理的输入形状与这些类似问题中的输入形状不同: R list of lists to data.frame Converting a list of lists to a dataframe in R: The Tidyverse-way

我正在使用一个 Web API,它返回这种形状的结果

listOfListsOfKeyVals <- lapply(1:5, function(i){
list(
col1 = i,
col2 = runif(1)
)
})

您可能认为以下内容可行

do.call(rbind, listOfListsOfKeyVals)

但仔细检查后,结果实际上是列表的数据框

do.call(rbind, listOfListsOfKeyVals) |> tibble()

# A tibble: 5 × 1
`do.call(rbind, listOfListsOfKeyVals)`[,"col1"] [,"col2"]
<list> <list>
1 <int [1]> <dbl [1]>
2 <int [1]> <dbl [1]>
3 <int [1]> <dbl [1]>
4 <int [1]> <dbl [1]>
5 <int [1]> <dbl [1]>

我想出了以下解决方案

foreach(x = listOfListsOfKeyVals, .combine = rbind) %do% {
as.data.frame(x)
} |> tibble()

但对于大型数据集来说,它的速度慢得令人痛苦。有更好的办法吗?

最佳答案

我认为您正在寻找dplyr::bind_rows

library(dplyr)

set.seed(12)
listOfListsOfKeyVals <- lapply(1:5, function(i){
list(
col1 = i,
col2 = runif(1)
)
})

bind_rows(listOfListsOfKeyVals)

输出:

# A tibble: 5 × 2
col1 col2
<int> <dbl>
1 1 0.0694
2 2 0.818
3 3 0.943
4 4 0.269
5 5 0.169

关于r - 如何将键值对列表列表转换为数据帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76428910/

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