【发布时间】:2018-09-20 19:13:29
【问题描述】:
我有一些用竖线分隔的文件,其中一些非常大(很多 GB),它们存在缺陷。有人错误地遗漏了一个字段和一个分隔符,但仅在某些行中。
我想使用read_lines 将每个文件作为字符串向量读取,然后应用count.fields(是否有此的tidyverse 版本?)将行拆分为两个字符串向量令牌。 (我必须删除其中一个向量中的最后一个字符串)。在所有这些操作之后,我想使用 read_delim 两次来解析具有不同数量分隔符的行集。我怎样才能欺骗read_delim 来读取每个字符串向量而不进行任何修改?还是我唯一的解决方案是编写新的临时文件然后使用read_delim?
read_delim 的在线帮助说:“文件”可以是文字,但“它必须包含至少一个新行才能被识别为数据(而不是路径)。”
"paste" 可以添加换行符(如下所示),但为什么我需要这样做来欺骗read_delim 读取文字数据而不是路径?为什么不向read_delim 添加一个参数,以便它以字符串向量的形式读取文字数据?
我想传递targetSet字符串向量,但是read_delim需要换行:
d <- read_delim(paste(targetSet, collapse="\n"), delim="|",
col_types=cols(.default="c"))
这适用于具有 100,000 条记录的文件,但粘贴失败,其中一个文件包含大约 1.6 亿条记录:
粘贴错误(targetSet, collapse = "\n") : 结果将超过 2^31-1 字节
我使用的是 64 位 R,所以我不明白这条消息。我正在使用的 Linux 机器上应该有几十 GB 的内存。
有没有技巧可以让read_delim 从 read_lines 中读取修改后的字符串向量? textConnection 有 tidyverse 版本吗?
【问题讨论】: