在字符列上合并大型 data.tables 会导致段错误

2023-12-13

我正在使用 R 版本 3.3.3(尽管我已经在 3.4.0 上复制了这个问题)并且data.tableCygwin 上的版本 1.10.4。 (Edit:下面的评论表明这可能是 Cygwin 特有的。)我需要通过字母数字 ID 列合并两个数据表(大约 1 兆字节和 2000 行)。大约四分之三的情况是,我在合并调用本身或稍后修改或打印合并表的调用中遇到段错误。 (我理解这是惰性评估的结果。)

这对于字符列来说尤其是一个问题;合并整数列效果很好。查看此终端会话:

> library(data.table)
data.table 1.10.4 #[snipping rest of startup message]
> n <- 2e6 # Make this higher if you can't trigger a segfault yourself.
> a <- data.table(a=1:n, b=runif(n), c=runif(n))
> b <- data.table(a=1:n, x=runif(n), y=runif(n))
> head(merge(a, b)) # This works fine.
   a         b          c         x          y
1: 1 0.6753597 0.08822928 0.7204507 0.71065772
2: 2 0.1898733 0.11883707 0.9820610 0.74329076
3: 3 0.3941039 0.57053921 0.3346781 0.22707652
4: 4 0.4564642 0.77429123 0.4924871 0.07743992
5: 5 0.9109421 0.79464586 0.2588091 0.82185820
6: 6 0.1805926 0.94213717 0.7426924 0.52522687
> a <- data.table(a=as.character(1:n), b=runif(n), c=runif(n))
> b <- data.table(a=as.character(1:n), x=runif(n), y=runif(n))
> head(merge(a, b))

 *** caught segfault ***
address 0xffffffffffffffff, cause 'unknown'

Traceback:
 1: `[.data.table`(x, i, , )
 2: x[i, , ]
 3: head.data.table(merge(a, b))
 4: head(merge(a, b))

If a and b are data.frames, then merge()字符列上不会出现段错误。问题:

  1. 这是有记录的还是众所周知的行为?
  2. 除了创建新的 ID 列或来回转换之外,是否有解决方法data.frame每当我需要使用merge()?

None

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

在字符列上合并大型 data.tables 会导致段错误 的相关文章

随机推荐

  • Processbuilder 不重定向 StdOut

    是否可以将输出流重定向回进程 或者根本不重定向 背景故事 我正在尝试使用 processbuilder 启动可执行文件 确切地说是源专用服务器 srcds exe 使用 processbuilder 启动它的结果是 该可执行文件的控制台窗口
  • ASP.NET 多语言策略建议

    嗨 兄弟姐妹们 我想知道是否有人会分享他们认为使用 NET 启用动态多语言系统的最佳策略的经验 我有一位客户希望拥有一个半 MRP 系统来存储所有产品的材料和规格 这些信息稍后将用于其他模块 例如发票 采购 营销 提取信息用于打印目的 等等
  • 具有不同版本的多个上下文

    我正在尝试在多个 OpenGL 上下文之间共享列表 这是一个很棒的功能 因为它允许我执行并行渲染线程 但由于我使用的是 CreateContextAttribs 因此我提供了请求特定 OpenGL 实现的可能性 因此 可能会发生某些上下文正
  • 如何在Python中将字符串列表转换为复数? [复制]

    这个问题在这里已经有答案了 我正在尝试编写在 Python 中导入和导出复数列表的代码 到目前为止 我正在尝试使用 csv 模块 我已使用以下方法将数据导出到文件 spamWriter csv writer open data csv wb
  • Fullcalendar/获取 JSON feed(已编辑)

    当使用 ajax 从 JSON feed 获取数据时 我的 fullCalendar 对象中的事件未显示 这是一个问题 我相信 JSON 格式是正确的 因为 JSON aspx 的输出是 id 1 title TESTTITLE info
  • 如何将整个 SQL Server 2014 数据库转储到文件中,以便导入到 Postgres 数据库中?

    我有一个 SQL Server 2014 数据库 我需要从中转储表数据 没有索引 存储过程或其他任何内容 该转储需要 按原样 导入到 Postgres 9 3 数据库中 创建此类转储的正确命令行是什么 我必须承认 这更像是一个笑话 您应该按
  • C# - 从静态 main 调用函数

    我的问题可能非常基本 但我没有找到答案 我在program cs中编写了一个函数 获取2个字符串的public checkSomething 当我尝试从静态 main 调用此函数时 我收到这个错误 非静态字段 方法或需要对象引用 属性 ch
  • 忽略示例函数中的值或 NA

    我在 R 中有一个矩阵 我想从每一行中抽取一个随机样本 我的一些数据在 NA 中 但是在进行随机采样时 我不希望 NA 成为采样的选项 我将如何实现这个目标 例如 a lt matrix c rep 5 10 rep 10 10 rep N
  • Google 脚本从选择范围(不是整个工作表)中删除重复项

    下面是一个用于从电子表格中删除重复行的 Google 表格脚本 虽然它确实可以删除重复的行 但它也会在此过程中破坏单元格内的公式 我目前有一系列工作表 其中所有原始数据都包含在列中A P我的所有公式都归入列Q T 在我尝试限制以下脚本仅适用
  • WIX 安装程序在状态行中显示括号

    我正在使用 WIX 安装程序 它在状态行中显示一些括号 见下图 我没有对 WIX 文件进行更改 但仅更改了已安装的文件 我确实将 WIX 更新到了 v3 11 因为这是在 Visual Studio 2017 中使用 WIX 所必需的 我们
  • DB事务还是Java DAO的方法同步?

    我有基于Java的Web服务器 并且我还有带方法的DAO单例对象 其SQL操作的逻辑必须以某种方式同步以保证数据 完整性 可以同时从多个 Java 线程访问方法 我想知道DB事务包装 可序列化级别 是否优于DAO的方法显式同步在服务器端 是
  • Flask 客户端会话

    开始学习PythonFlaskWeb 应用程序框架 仍在学习曲线上 所以请耐心等待 我想知道客户端会话对于安全 Web 应用程序的目的有多合适 从表面上看 存在一些严重的担忧 由于所有会话变量都被序列化并编码在 cookie 中 因此应该注
  • 如何获取android中存储目录的路径

    有什么方法可以得到 storage 目录 我尝试过Environment getExternalStorageDirectory 但它返回 storage emulated 0我知道我可以使用file getParent 但由于某种原因我不
  • ADF 在 git 模式下发布混乱

    在 git 模式下 当我们想要测试管道时 ADF 会强制我们先发布 我的理解是 发布操作做了两件事 按照给定保存到本地 ADF DEV here 在分支 adf publish 我们的分支 中创建arm模板 指定 但要启用 发布 按钮 我们
  • 释放方法返回的对象

    好吧 我知道这个问题的答案应该是显而易见的 但我需要朝着正确的方向一点推动 我发现自己编写了很多遵循以下模式的方法 NSThing myMethod NSThing thing NSthing alloc init do some stuf
  • 使用 /proc/meminfo 读取 Android 设备的 RAM 总量

    我正在考虑读取 Android 设备的物理 RAM 总量 据我了解 这些信息存储在 proc meminfo中 我怎样才能阅读它 尝试这个 public void getTotalMemory String str1 proc meminf
  • 如何循环返回主菜单?

    我想知道这是否是循环回到 python 主菜单的正确方法 选择选项并完成任务后 脚本需要返回主菜单而不是退出 usr bin python def mainmenu print 1 Scan print 2 Ping print 3 Exi
  • 是否可以在 POST Json 中附加文件?

    我有一堆 JSON 序列化对象 格式的数据 我通过以下方式将此数据发送到服务器POST带标题的方法 Content Type application json 是否可以将文件附加到正文请求并立即发送 或者 JSON 数据建议仅发送文本数据
  • AttachConsole 错误 5:访问被拒绝

    我正在 Visual Studio 2013 中使用 C 控制台应用程序 在 Windows 上工作 首先我使用分离控制台FreeConsole 有用 然后 调用AllocConsole as FreeConsole 然后 AttachCo
  • 在字符列上合并大型 data.tables 会导致段错误

    我正在使用 R 版本 3 3 3 尽管我已经在 3 4 0 上复制了这个问题 并且data tableCygwin 上的版本 1 10 4 Edit 下面的评论表明这可能是 Cygwin 特有的 我需要通过字母数字 ID 列合并两个数据表