【问题标题】:read_tsv stalls: is this an encoding issue?read_tsv 停止:这是编码问题吗?
【发布时间】:2019-08-11 21:56:55
【问题描述】:

对于这篇文章缺乏特异性,我提前道歉,但在这种情况下我无法提供可重现的示例。我正在尝试使用 R 阅读器的read_tsv 读取制表符分隔的数据文件。数据来自机密来源,因此我无法分享,即使只是有问题的部分。 read_tsv 停止了大约 20% 的阅读进度,除非我快速杀死 R,否则我的 RAM 使用量开始飙升到我的计算机死机的程度(我在 Ubuntu 18.04 上)。具体来说,我正在跑步:

read_tsv(file = path_to_file, 
         skip = 10e6, 
         n_max = 1e5)

我正在跳过行并设置 n_max 以模糊地隔离问题所在并运行更快的测试。我还尝试将read_tsv 的语言环境设置为locale(encoding = 'latin1'),但没有成功。我尝试通过阅读阅读器的read_lines 来检查这个有问题的部分:

read_lines(file = path_to_file, 
           skip = 10e6, 
           n_max = 1e5)

那里没有阅读问题:我得到一个字符串列表。我对所有这些都运行了validUTF8,它们似乎都是有效的。我只是不知道什么类型的问题会导致read_tsv 停止。有什么想法吗?

【问题讨论】:

  • 请在新的 R 会话中尝试使用 data.table::fread(会更快)
  • 文件有多大?可能只是它太大而无法放入内存。

标签: r encoding readr


【解决方案1】:

我解决了这个问题。似乎它来自使用默认 read_tsv quote 选项对引用字符的不当处理。改用quotes = "" 使其工作顺利。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多