展平递归列表

2024-01-06

显然有很多关于这个主题的问题,但我看不到提出的任何通用解决方案:我有一个深度递归列表,并希望将其展平为包含所有非列表项的单个列表。

例如,采用这个嵌套列表:

d = list(
  list(
    list(
      iris[sample(1:150,3),],
      iris[sample(1:150,3),]
    ),
    list(
      list(
        iris[sample(1:150,3),],
        list(
          iris[sample(1:150,3),],
          iris[sample(1:150,3),]
        )
      )
    )
  )
)

并将其变成这样:

list(iris[sample(1:150,3),],
     iris[sample(1:150,3),],
     iris[sample(1:150,3),],
     iris[sample(1:150,3),],
     iris[sample(1:150,3),])

我根据其他解决方案尝试了以下一些方法:

purrr::flatten(d)
plyr::llply(d, unlist)
lapply(d, unlist, use.names=FALSE)

没有一个达到预期的结果,在示例中是一个长度为 5 的单个列表,所有项目都是data.frame。任何建议表示赞赏。


这是仅使用基本 R 的通用展平函数:

flatten <- function(x) {
  if (!inherits(x, "list")) return(list(x))
  else return(unlist(c(lapply(x, flatten)), recursive = FALSE))
}

Result:

flatten(d)
#[[1]]
#    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
#44           5.0         3.5          1.6         0.6     setosa
#138          6.4         3.1          5.5         1.8  virginica
#87           6.7         3.1          4.7         1.5 versicolor
#
#[[2]]
#   Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
#19          5.7         3.8          1.7         0.3     setosa
#1           5.1         3.5          1.4         0.2     setosa
#71          5.9         3.2          4.8         1.8 versicolor
#
#[[3]]
#    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
#31           4.8         3.1          1.6         0.2     setosa
#98           6.2         2.9          4.3         1.3 versicolor
#134          6.3         2.8          5.1         1.5  virginica
#
#[[4]]
#    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
#140          6.9         3.1          5.4         2.1  virginica
#119          7.7         2.6          6.9         2.3  virginica
#57           6.3         3.3          4.7         1.6 versicolor
#
#[[5]]
#    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
#73           6.3         2.5          4.9         1.5 versicolor
#54           5.5         2.3          4.0         1.3 versicolor
#146          6.7         3.0          5.2         2.3  virginica

相似地:

x <- list(list("A"), list(list("A"), list("A")))
flatten(x)
#[[1]]
#[1] "A"
#
#[[2]]
#[1] "A"
#
#[[3]]
#[1] "A"

x <- list(list(1), list(list(2), list(3)))
flatten(x)
#[[1]]
#[1] 1
#
#[[2]]
#[1] 2
#
#[[3]]
#[1] 3

当目标是删除列表时添加更多列表似乎有点迂回,但是list/unlist路由是连接具有不同数量元素的列表的唯一可靠方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

展平递归列表 的相关文章

  • XLConnect 无法确定 JAVA_HOME 错误

    感谢您的帮助 我正在尝试运行 XLconnect 但收到此错误消息 gt library XLConnect lib loc C Users 1144143929 Documents R win library 2 15 Error onL
  • R 中的点图每行有多个值

    我有以下 R 输入文件 car 1 car 2 car 3 car2 1 car2 2 car2 3 然后 我使用以下命令来绘制图表 autos data 点图 autos data V2 autos data V1 但这将每个汽车和 ca
  • 跨类别和列自动化卡方

    我有一个调查数据框 其中包含几个问题 列 编码为 1 同意 0 不同意 受访者 行 根据 年龄 年轻 中年 老年 地区 东 中 西 等指标进行分类 大约有30个类别总共 3个年龄 3个地区 2个性别 11个职业等 在每个指标中 类别不重叠且
  • 将模式的所有元素与向量以相同的顺序匹配

    我创建了一个函数yes seq需要两个参数 一个模式pat和数据dat 该函数以相同的顺序查找数据中是否存在模式 例如 dat lt letters 1 10 dat 1 a b c d e f g h i j pat lt c a c g
  • 如何在R中创建for循环? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在 R 编程中启动 for 循环 https stackoverflow com questions 4162363 how to start a for loop in r programmin
  • 如何创建 highcharter 事件函数以在 Shiny R 中创建“下拉函数”

    我正在建造一个shiny应用程序 我想要完成的事情之一是创建一个下拉菜单 我想将劳动力变量绘制为不同级别的年份变量的函数 请参阅下面的示例数据框 year level 2 level 3 labour 1 2013 10 101 1 2 2
  • 在zooreg时间序列中查找非唯一索引条目时遇到问题

    我有几年的数据正在尝试将其转化为动物园对象 Dropbox 上的 csv https www dropbox com sh vg8w8pt16e0v3xs AABKtWqDkPu9JVKpwBXO36VOa dl 0 一旦数据被强制转换为动
  • 连接树状图和热图

    我有一个heatmap 一组样本的基因表达 set seed 10 mat lt matrix rnorm 24 10 mean 1 sd 2 nrow 24 ncol 10 dimnames list paste g 1 24 sep p
  • 使用 R 将日期格式的字符串列表/向量转换为 posix 日期类

    我有一个日期格式的字符串列表 我想将其转换为可以使用 R 操作的 posix 日期列表 我该怎么做 这就是我所拥有的 但我最终得到了一个列表 a lt c 2009 01 01 00 00 00 2009 01 01 00 00 00 z
  • R ggplot2 分面保持比率但覆盖/定义输出图大小

    我目前正在使用 ggplot2 来比较不同组的统计数据 每个组属于不同的区域 这是通过运行 R 脚本的 Web 应用程序 tikiwiki CMS 插件 R 完成的 每个区域我可以有 2 到 30 个或更多组 相同的 R 脚本针对唯一网页中
  • ggplot 按因子和梯度颜色

    我正在尝试绘制一个对两个变量 一个因子和一个强度 进行着色的图 我希望每个因素都是不同的颜色 并且我希望强度是白色和该颜色之间的渐变 到目前为止 我已经使用了诸如对因子进行分面等技术 将颜色设置为两个变量之间的相互作用 并将颜色设置为因子并
  • SparkR 和 Sparklyr 之间导入 parquet 文件所需的时间差异

    我正在使用 databricks 导入镶木地板文件SparkR and sparklyr data1 SparkR read df dbfs data202007 source parquet header TRUE inferSchema
  • 在 R 中读入原始二进制数据并将其转换为整数

    我有一个二进制文件 其中包含编码为不同长度 主要是 2 4 字节 的有符号或无符号整数的数值 为了处理这些数据 我将文件的所需部分读取为raw向量与readBin 然后尝试将其转换为十进制 问题是 R的内置函数有限制 我不太明白 比如没有l
  • e_facet 在 echarts4r 问题中使用分组数据

    我真的很喜欢这个包提供的可能性 并且想在一个闪亮的应用程序中使用它 然而我正在努力重新创建从 ggplot 到 echarts4r 的情节 library tidyverse library echarts4r data tibble ti
  • R ggplot:加权 CDF

    我想使用绘制加权 CDFggplot 一些旧的非 SO 讨论 例如this https stat ethz ch pipermail r help 2012 October 337288 html从 2012 年起 建议这是不可能的 但我想
  • R中的for循环和if函数

    我正在用 R 中的 if 函数编写一个循环 表格如下 ID category 1 a 1 b 1 c 2 a 2 b 3 a 3 b 4 a 5 a 我想使用 for 循环和 if 函数添加另一列来计算每个分组的 ID 如下所示的计数列 I
  • 从 SpatialPolygons 和其他 sp 类中提取要素坐标

    Package sp为不同的空间概念 点 线 多边形 提供了许多类 对于某些类 访问要素坐标很简单 例如SpatialLines 所有示例均取自相应课程的帮助页面 l1 cbind c 1 2 3 c 3 2 2 l1a cbind l1
  • 从拟合的 lm 或 glm [R] 获取每个因子水平(以及交互作用)的数据数量

    我在 R 中有一个逻辑回归模型 其中所有预测变量都是分类变量而不是连续变量 除了响应变量 它显然也是分类 二元变量 打电话时summary model name 有没有办法在每个因子水平中包含一个表示观测值数量的列 我在 R 中有一个逻辑回
  • Pyspark - 一次聚合数据帧的所有列[重复]

    这个问题在这里已经有答案了 我想将数据框分组到单个列上 然后对所有列应用聚合函数 例如 我有一个包含 10 列的 df 我希望对第一列 1 进行分组 然后对所有剩余列 均为数字 应用聚合函数 sum 与此等效的 R 是 summarise
  • R - 加速近似日期匹配。 idata.frame?

    我正在努力有效地执行两个数据帧之间的 关闭 日期匹配 这个问题探索了一个解决方案 使用idata frame来自plyr包 但我也对其他建议的解决方案感到非常满意 这是两个数据框的非常简单的版本 sampleticker lt data f

随机推荐

  • 强制应用程序在 OnCreate 过程中显示任务栏图标

    我用的是delphi XE2 在我的主窗体 OnCreate 过程中 我运行一些重要的元素 例如登录过程等 我的问题是 当我显示登录表单 由 OnCreate 过程调用 时 我的应用程序在任务栏上不可见 当主表单可见时它变得可见 问题是 当
  • Tomcat 7 - 检索 web 应用程序的版本(版本化 WAR)

    我一直无法找到任何简单的方法来确定使用 Tomcat 7 版本命名部署的 WAR 文件的版本字符串 即 app version war 你可以阅读相关内容here http tomcat apache org tomcat 7 0 doc
  • Google Play 服务已过时。需要 11011000 但找到 10289574

    我已经为这个问题苦苦挣扎了大约一周 一直在搜索与此相关的类似主题 但仍然无法解决我的问题 问题是 当我尝试在 Polar m600 磨损或磨损模拟器 Android V 7 1 1 和 API25 上运行我的程序时 他们给我这条消息 Goo
  • 如何在 Spark SQL 中为表添加增量列 ID

    我正在研究 Spark mllib 算法 我的数据集是这种形式 Company XXXX CurrentTitle XYZ Edu Title ABC Exp mnth 还有更多类似的值 我正在尝试将原始代码字符串值转换为数字值 因此 我尝
  • <% %> 标签的实际名称是什么?

    可能是一个多余且无用的问题 但我和我的同事将 称为服务器标签 但它们有实际的名称吗 我见过使用的一种称为酒精标签 根据答案进行编辑 我们在 ASP NET 中引用它们 但我认为如果它们执行相同的工作 它们会在所有语言中使用相同的名称 服务器
  • 从 Firebase 存储中删除包含内容的文件夹[重复]

    这个问题在这里已经有答案了 我可以轻松删除子引用中的文件 但如何从 Firebase Storage 中删除整个文件夹 let postRef FIRStorage storage reference child posts folderN
  • 删除字段并将新字段添加到弹性搜索索引中的映射

    我在第一次为一个字段创建索引时犯了一个错误 我错误地将 评级 字段指定为 字符串 而不是 整数 数据类型 但该字段中存储的数据只是整数 当我尝试计算平均评分聚合时 由于字符串数据类型 它引发了错误 有没有办法在不重新索引的情况下更改字段的数
  • 无法通过 Jenkins 声明式管道在 Docker 映像中作为代理进行 pip 安装

    I have 完后还有通过 Jenkins 声明性管道运行 Docker 的权限问题 我想通过 Docker 容器中的 Jenkins 作业构建和发布 Python 包 pipeline agent docker image python
  • SVH 单元在移动 Safari 中无法正常工作

    Mobile Safari 不区分 CSS 单元svh and dvh 当视口展开 工具栏缩回 时 这些单元应该产生不同的高度 但它们却产生相同的高度 Safari 对这些单位的支持是在 WebKit 博客中宣布 https webkit
  • IIS URL 重写模块:Url.Content() 无法正确解析 CSS/图像路径

    我有一个带有布局页面等的标准 MVC3 项目 现在我需要制作漂亮的 URL 我开始使用 URL 重写模块 我正在尝试翻译http localhost Photographer Pablointo http localhost categor
  • 查找距给定 Lat Lng 位置一定距离内的所有纬度经度位置的算法

    给定具有纬度 经度位置的地点数据库 例如 40 8120390 73 4889650 我如何找到特定位置给定距离内的所有位置 从数据库中选择所有位置 然后一一遍历它们 获取距起始位置的距离 看看它们是否在指定距离内 这似乎不是很有效 有没有
  • EditText 只接受几个字符

    我需要实施一个EditText在 Android 上 它仅接受特定范围的字符 即 S A Q W R B C D E U 在你的程序中使用这两个属性怎么样 EditText android maxLength 1 android digit
  • 如何使用 Node.JS 防止 SQL 注入?

    如何使用 Node JS 选择 MS SQL Server 数据库的一行并防止 SQL 注入 我使用express框架和包mssql https www npmjs com package mssql 这是我现在使用的代码的一部分 可以使用
  • 保留期后的 Kafka 偏移量

    我有一个带有 1 个分区的 kafka 主题 如果其中有 100 条消息 则偏移量将从 0 99 开始 根据 kafka 保留策略 所有消息都将在指定期限后被清除 一旦所有消息都被清除 保留期过后 我将向该主题发送 100 条新消息 现在
  • 访问JS文件中的css变量

    我有一个CSS有一些变量定义的文件 red red color yello yellow color 我可以使用这个变量CSS文件 但我想知道如何在我的JS file 假设您使用的是原生 CSS 变量而不是某些预处理器 请查看这一页 htt
  • 经过一段时间后调度操作

    所以我第一次使用 React 和 Redux 在我的应用程序中 我使用第三方 API 来获取数据等 在这方面一切都很好 然而 像大多数受保护的 API 一样 我需要获取一个短暂的令牌来向 API 发出请求 我想在某种事件上设置一个计时器 以
  • 将 Asp.Net MVC 控制器转换为 Web API 的最佳方法

    我有这个ASP NET MVC 5我正在使用 MS Web Api 将其转换为 AngularJS 的项目 现在在旧项目中我有这些类型的 c 控制器Controller 但是在我的新项目中 我创建了一些新的 Web Api 控制器类型Api
  • R 内置 Web 服务器

    从 R 2 13 开始 R 附带了内置的 Web 服务器 有没有一种简单的方法可以使用 R 和自定义端口号创建本地 Web 服务器 在Python中它将是 使用 http 本地主机 8080 http localhost 8080 pyth
  • 如何使用swing类Java绘制网格并在单击和拖动时检测鼠标位置

    我正在尝试使用 Swing 类创建一个网格 UI 5 5 我尝试了嵌套循环并将 jPanel 动态添加到 jFrame 中 我还尝试在用户单击并放在每个 jPanel 上时更改其背景颜色 但在我的代码中 每个单元格之间存在巨大的间隙 我无法
  • 展平递归列表

    显然有很多关于这个主题的问题 但我看不到提出的任何通用解决方案 我有一个深度递归列表 并希望将其展平为包含所有非列表项的单个列表 例如 采用这个嵌套列表 d list list list iris sample 1 150 3 iris s