取消嵌套或取消切割包含不同长度列表的数据帧

2023-11-21

我有一个数据框,其中有几列,其中包含我想要的列表列unnest (or unchop)。但是,它们的长度不同,所以产生的错误是Error: No common size for...

这是一个表示,显示什么有效,什么无效。

library(tidyr)
library(vctrs)

# This works as expected
df_A <- tibble(
  ID = 1:3,
  A = as_list_of(list(c(9, 8, 5), c(7,6), c(6, 9)))
)

unchop(df_A, cols = c(A))
# A tibble: 7 x 2
     ID     A
  <int> <dbl>
1     1     9
2     1     8
3     1     5
4     2     7
5     2     6
6     3     6
7     3     9

# This works as expected as the lists are the same lengths

df_AB_1 <- tibble(
  ID = 1:3,
  A = as_list_of(list(c(9, 8, 5), c(7,6), c(6, 9))),
  B = as_list_of(list(c(1, 2, 3), c(4, 5), c(7, 8)))
)

unchop(df_AB_1, cols = c(A, B))

# A tibble: 7 x 3
     ID     A     B
  <int> <dbl> <dbl>
1     1     9     1
2     1     8     2
3     1     5     3
4     2     7     4
5     2     6     5
6     3     6     7
7     3     9     8

# This does NOT work as the lists are different lengths

df_AB_2 <- tibble(
  ID = 1:3,
  A = as_list_of(list(c(9, 8, 5), c(7,6), c(6, 9))),
  B = as_list_of(list(c(1, 2), c(4, 5, 6), c(7, 8, 9, 0)))
)

unchop(df_AB_2, cols = c(A, B))

# Error: No common size for `A`, size 3, and `B`, size 2.

我想要实现的输出df_AB_2上面的内容如下,其中每个列表都未切分,缺失值用 NA 填充:

# A tibble: 10 x 3
      ID     A     B
   <dbl> <dbl> <dbl>
 1     1     9     1
 2     1     8     2
 3     1     5    NA
 4     2     7     4
 5     2     6     5
 6     2    NA     6
 7     3     6     7
 8     3     9     8
 9     3    NA     9
10     3    NA     0

我已经参考过这个issue在 Github 和 StackOverflow 上here.

有什么想法如何实现上述结果吗?

Versions

> packageVersion("tidyr")
[1] ‘1.0.0’
> packageVersion("vctrs")
[1] ‘0.2.0.9001’

这是通过 dplyr 提出的一个想法,您可以将其推广到任意数量的列,

library(tidyverse)

df_AB_2 %>% 
 pivot_longer(c(A, B)) %>% 
 mutate(value = lapply(value, `length<-`, max(lengths(value)))) %>% 
 pivot_wider(names_from = name, values_from = value) %>% 
 unnest() %>% 
 filter(rowSums(is.na(.[-1])) != 2)

这使,

# A tibble: 10 x 3
      ID     A     B
   <int> <dbl> <dbl>
 1     1     9     1
 2     1     8     2
 3     1     5    NA
 4     2     7     4
 5     2     6     5
 6     2    NA     6
 7     3     6     7
 8     3     9     8
 9     3    NA     9
10     3    NA     0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

取消嵌套或取消切割包含不同长度列表的数据帧 的相关文章

  • picker输入字体或背景颜色

    我在闪亮的仪表板中使用 pickerInput 这很好 除了一个问题 背景颜色和字体颜色太相似 使得过滤器选择难以阅读 有什么办法可以改变背景或字体颜色吗 如果可能的话 我想继续使用 pickerInput 但如果有一个带有 selectI
  • 多个动态滤镜更新闪亮

    我希望能够让 UI 输入闪亮 并根据用户之前的选择进行自我更新 因此 在下面的示例中 预期的行为是用户选择cyl vsor carb那么这将 过滤数据集mtcars用于创建绘图 即用户根据过滤条件调整绘图并 更新其他过滤器中的剩余输入选择
  • 行对名称中具有特定模式的列求和

    我有一个像这样的数据表 DT lt ata table data table ref rep 3L 4L nb 12 15 i1 c 3 1e 05 0 044495 0 82244 0 322291 i2 c 0 000183 0 155
  • 更新 R6 对象实例中的方法定义

    如何更新 R6 类实例的方法定义 正如我所期望的 S3 使用当前的方法定义 对于 R5 参考类 我可以使用 myInstance myInstance copy 在 R6 中 我尝试了 myInstance myInstance clone
  • 在 R 的 for 循环中创建动态命名对象并分配动态值

    我正在尝试创建一套动态命名的新对象 例如 temp2015 使用 for 循环 并存储动态值 具体来说 其他对象的名称 例如 Y2015 和 for 循环中使用的值 例如 2015 在动态命名的新对象中 我不确定为什么下面的代码不起作用 Y
  • 在r中的某个阈值处破坏 cumsum() 函数

    例如我有以下代码 cumsum 1 100 我想打破它 如果一个元素 i 1 大于3000 我怎样才能做到这一点 因此 而不是这个结果 1 1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 15
  • R Shinydashboard 自定义 CSS 到 valueBox

    我一直在尝试将 valueBox 的颜色更改为自定义颜色 超出 validColors 中可用的颜色 但一直无法这样做 我知道有一种方法可以使用标签来包含自定义 CSS 但是我无法将它们放在正确的位置 ui lt dashboardPage
  • 使用选定因子水平的值向 ggplot-barchart 添加水平线

    在这个情节中 df lt data frame factor as factor c rep A 3 rep B 3 Treatment c rep c A B C 2 values runif 6 0 1 ggplot df aes Tr
  • dplyr:连接中的 NSE (by)

    我很难弄清楚如何使用 dplyr left join 和 NSE 连接两个表 问题是我无法为 by 提供正确的值 我想我现在已经找到了解决方案 但感觉我正在以一种额外复杂的方式来做 因此 如果您知道更简单 更优雅的解决方案 请告诉我 这就是
  • 需要在R中跳过不同数量的行

    我正在使用以下代码来处理我的数据 但最近我意识到使用skip 27 在数据开始之前跳过存储在我的文件中的信息 不是一个好的选择 因为每个文件中要跳过的行数不同我的目标是读取存储在多个文件夹中的各种txt文件 并非所有文件都有相同的列数 列的
  • 将维基百科中的表格加载到 R 中

    我正在尝试从以下 URL 将最高法院法官表加载到 R 中 https en wikipedia org wiki List of Justices of the Supreme Court of the United States http
  • 如何将旋转的 NetCDF 转换回正常的纬度/经度网格?

    我有一个带有旋转坐标的 NetCDF 文件 我需要将其转换为正常的纬度 经度坐标 经度为 180到180 纬度为 90到90 library ncdf4 nc open dat nf 对于尺寸 它显示 1 5 variables exclu
  • R 改变构面的顺序

    我正在尝试将方面的顺序从 BA SLG 更改为 SLG BA 我发现了与此类似的问题 但我认为我的解决方案可能不起作用 因为我已经在Excel中汇总了数据 因此 我的数据框可能会有所不同 无论如何 我尝试实现这个但无济于事 df2 lt f
  • 无法将“gather”输出的列名称更改为默认名称以外的任何名称

    我正在尝试使用gather in the tidyr包 但我无法更改默认名称的输出列名称 例如 df data frame time 1 100 a 1 100 b 101 200 df long df gt gather foo bar
  • 条件和分组 mutate dplyr

    假设我有以下每个抽屉库存增加的数据 gt socks year drawer nbr sock total 1990 1 2 1991 1 2 1990 2 3 1991 2 4 1990 3 2 1991 3 1 我想要一个二进制变量来标
  • 在闪亮的数据表中为每个单元格显示工具提示或弹出窗口?

    有没有什么方法可以为 r闪亮数据表中的每个单元格获取工具提示 有很多方法可以获取悬停行或列 但我找不到一种方法来获取行和列索引并为每个单元格显示不同的悬停工具提示 任何人都可以修改以下代码吗 library shiny library DT
  • R 中的数据框操作 - 将单元格向左移动并删除 NA

    我有一个数据框 其列由随机分布的值和 NA 组成 如下所示 a lt c S E NA S NA b lt c A NA M G K c lt c I NA NA NA L meh lt dataframe a b c 1 2 3 4 5
  • 如何在R中分离两个图?

    每当我运行这段代码时 第一个图就会简单地覆盖前一个图 R中有没有办法分开得到两个图 plot pc title main abc xlab xx ylab yy plot pcs title main sdf xlab sdf ylab x
  • 斯皮尔曼相关性和联系

    我正在一小组配对排名上计算斯皮尔曼的 rho 斯皮尔曼因处理领带不当而闻名 例如 取2组8个排名 即使两组中有6个是平局 相关性仍然很高 gt cor test c 1 2 3 4 5 6 7 8 c 0 0 0 0 0 0 7 8 met
  • 如何在R中实现countifs函数(excel)

    我有一个包含 100000 行数据的数据集 我尝试做一些countifExcel 中的操作 但速度慢得惊人 所以我想知道R中是否可以完成这种操作 基本上 我想根据多个条件进行计数 例如 我可以指望职业和性别 row sex occupati

随机推荐

  • 仅使用以太网帧的 Windows 网络

    我正在做一个项目 我必须为连接到 Windows 机器的设备编写网络库 复杂之处在于我只能使用以太网帧与设备进行通信 所以根本不存在TCP UDP IP 我不认为绑定 监听 接受方法可以应用在这里 但也许我错了 此外 不涉及路由或交换 我有
  • 中断到我的应用程序的链接

    我有个问题 我使用下面的代码来中断我的应用程序的链接
  • Azure COM 对象

    我正在尝试将我在带有 IIS 的服务器上托管的网站移至 Azure 网站 我正在使用 COM 对象 但我不确定是否可以注册它 我发现一些帖子谈论上传 dll 并在启动时注册它 但该文章似乎丢失了 这可能吗 我在 Azure 上注册旧版 CO
  • Android 如何等待代码完成后再继续

    我有一个方法叫做hostPhoto 它基本上将图像上传到网站并检索链接 然后我有另一种方法来发布网站链接 现在我使用这种方法的方式是这样的 String link hostPhoto returns a link in string for
  • .NET Core将本地API表单数据发布请求转发到远程API

    我有一个 AJAX 表单 它将表单数据发布到本地 API url api document 它包含一个文件和一个自定义 ID 我们只想获取准确收到的请求并将其转发到远程 API example com 8000 document uploa
  • Tastypie - 未找到嵌套资源字段

    我有这个代码 api model class VideoResource ModelResource class Meta queryset Video objects all include resource uri False reso
  • 使用 pgx 在 GO 中的 Postgres 中批量插入

    我正在尝试在 go 中的 db 中批量插入键 这是代码关键结构 type tempKey struct keyVal string lastKey int 测试键 data tempKey keyVal abc lastKey 10 key
  • 将集合转换为数组的最简单方法?

    假设我们有一个Collection
  • 使用 xpath 在 Java 中解析带有命名空间的 XML

    我正在尝试用 java 解析 SOAP 请求 但代码没有返回任何节点 这是代码任何人都可以发现错误 String xml
  • 字符串操作与正则表达式

    我们经常被告知正则表达式很慢 应该尽可能避免 然而 考虑到自己进行一些字符串操作的开销 不是谈论算法错误 这是另一回事 特别是在PHP or Perl maybe Java 是什么limit 在什么情况下我们可以考虑字符串操作是更好的选择
  • ASP.Net MVC 5 子目录捆绑问题

    我在 ASP Net MVC 5 项目中看到捆绑的奇怪行为 当我明确声明 BundleConfig cs 文件中的所有文件时 我的项目工作得很好 如下所示 bundles Add new ScriptBundle bundles app I
  • 将单元格添加到 iOS 中 UITableView 的底部

    我正在使用带有情节提要的 xcode 4 2 来创建 iphone 应用程序 当我按下右上角的编辑按钮时 我希望有选项来删除现有行并在顶部看到额外的单元格 带有绿色 图标 这将允许我添加新单元格 我有一个正在填充的数组viewDidLoad
  • ThreadPoolExecutor 队列满时会阻塞?

    我正在尝试使用 ThreadPoolExecutor 执行大量任务 下面是一个假设的例子 def workQueue new ArrayBlockingQueue
  • 将 struct 转换为 int

    考虑到 让我添加一个代码片段来澄清 typedef struct uint8 t field 5 uint8 t field2 4 and so on some struct t some struct t some struct init
  • UITextField:textRectForBounds:与。编辑矩形边界:

    和有什么区别UITextField其文本的矩形与可编辑文本的矩形 我只想移动文本字段内显示文本的位置 我应该用相同的确切实现来重写这两种方法吗 UITextField 类参考 文本矩形边界 返回文本字段文本的绘图矩形 编辑矩形边界 返回可以
  • 多点连接:接受邀请(使用内置浏览器 VC)

    我试图关注 WWDC 演讲了解多点连接框架 经过多次错误启动后 浏览器会显示对等方 并发出邀请 但是当我在对等设备上按 接受 时 浏览器一直显示 正在连接 没有结束 我以为MCBrowserViewController处理了逻辑 我可以放松
  • lambda 表达式和事件处理程序?

    有人向我提到 c 支持使用 lambda 表达式作为事件处理程序 有人可以与我分享一些这方面的参考吗 最好有代码片段 您可以使用 lambda 表达式构建匿名方法 该方法可以附加到事件 例如 如果您制作一个带有Button and a La
  • 如何自定义谷歌课堂共享按钮的外观和感觉

    目前 它看起来像一个旁边没有文字的正方形 我们希望在不干扰图标的情况下自定义外观和感觉 当然以匹配我们的其他按钮 已经尝试将样式添加到div已转换为共享图标 但到目前为止尚未成功 div class btn btn blue Google
  • 在 data.frame 中的两列之间添加(插入)一列

    我有一个包含 a b 和 c 列的数据框 我想在 b 和 c 之间添加一个新列 d 我知道我可以通过使用在末尾添加 dcbind但我怎样才能insert它在两列之间吗 我建议你使用该功能add column 来自tibble包裹 libra
  • 取消嵌套或取消切割包含不同长度列表的数据帧

    我有一个数据框 其中有几列 其中包含我想要的列表列unnest or unchop 但是 它们的长度不同 所以产生的错误是Error No common size for 这是一个表示 显示什么有效 什么无效 library tidyr l