首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >扁平深嵌套的数据列表

扁平深嵌套的数据列表
EN

Stack Overflow用户
提问于 2022-04-22 14:02:33
回答 2查看 181关注 0票数 5

考虑一下这个嵌套的数据格式列表:

代码语言:javascript
运行
复制
df <- data.frame(x = 1:5, y = letters[1:5])
l <- list(df, list(df, df), list(df, list(df, df, list(df))), list(df), df)

如何从这个深嵌套的列表中获得一个简单的数据格式列表:

代码语言:javascript
运行
复制
list(df, df, df, df, df, df, df, df, df)

通常的解决方案(如here)无法保持dataframes的结构。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-22 14:12:32

一个方便的选择是使用rrapply

代码语言:javascript
运行
复制
rrapply::rrapply(l, classes = "data.frame", how = "flatten")

检查它是否与所需的输出相同:

代码语言:javascript
运行
复制
identical(list(df, df, df, df, df, df, df, df, df), 
          rrapply(l, classes = "data.frame", how = "flatten"))

[1] TRUE
票数 6
EN

Stack Overflow用户

发布于 2022-04-22 15:17:40

或者使用基本的R递归函数:

代码语言:javascript
运行
复制
unnestdf <- function(x) 
{
  if (is.data.frame(x))
    return(list(x))
  if (!is.list(x))
    return(NULL)
  unlist(lapply(x, unnestdf), F)
}

unnestdf(l)

#> [[1]]
#>   x y
#> 1 1 a
#> 2 2 b
#> 3 3 c
#> 4 4 d
#> 5 5 e
#> 
#> [[2]]
#>   x y
#> 1 1 a
#> 2 2 b
#> 3 3 c
#> 4 4 d
#> 5 5 e
#> 
#> [[3]]
#>   x y
#> 1 1 a
#> 2 2 b
#> 3 3 c
#> 4 4 d
#> 5 5 e
#> 
#> [[4]]
#>   x y
#> 1 1 a
#> 2 2 b
#> 3 3 c
#> 4 4 d
#> 5 5 e
#> 
#> [[5]]
#>   x y
#> 1 1 a
#> 2 2 b
#> 3 3 c
#> 4 4 d
#> 5 5 e
#> 
#> [[6]]
#>   x y
#> 1 1 a
#> 2 2 b
#> 3 3 c
#> 4 4 d
#> 5 5 e
#> 
#> [[7]]
#>   x y
#> 1 1 a
#> 2 2 b
#> 3 3 c
#> 4 4 d
#> 5 5 e
#> 
#> [[8]]
#>   x y
#> 1 1 a
#> 2 2 b
#> 3 3 c
#> 4 4 d
#> 5 5 e
#> 
#> [[9]]
#>   x y
#> 1 1 a
#> 2 2 b
#> 3 3 c
#> 4 4 d
#> 5 5 e
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71970037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档