请注意,我正在处理的输入形状与这些类似问题中的不同:R list of lists to data.frameConverting 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)
但仔细观察,结果实际上是一个列表的 Dataframe
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()
但对于大型数据集来说,这是令人痛苦的慢。有更好的办法吗?
2条答案
按热度按时间zzoitvuj1#
我想你是在找
dplyr::bind_rows
。输出:
nbysray52#
另一个选项是
rrapply
:和一个基本R选项,带有
matrix
: