从大文本中删除引号 file/data.table

Remove Quotes from large text file/data.table

我有一个包含 57 列和约 300 万行 1.2 GB 的大型文本文件,我想从其中删除单元格值中的引号(双引号或单引号),例如..

列 1 列 2

“1”“2”...

“3”“4”...

... ...

目前有 2 个实现。

实施 1 - 正在工作:

使用 readLines 基函数读取文件

system.time(example1 <- gsub("\"", "", readLines("large-file.txt"), perl = TRUE))

user  system elapsed 

88.756   1.172  90.226 

实施 2 - 不工作

使用 fread 函数从 data.table 包 中读取文件,然后使用 gsub 取消引用。

library(data.table)

system.time(example2 <- fread("Dropbox/Review/case studies/evidence.txt"))

user  system elapsed 

38.052   6.176  59.764

example2 <- gsub("\"", "", example2)

这通常会使我的 4GB 笔记本电脑死机,或者在超过 10 分钟后我终止了 rsession。

我也尝试过使用 data.table 的不同解决方案,但没有成功。

例如

example3 <- data[, lapply(.SD, function(x) x %like% "\"")]

为了至少标记故障电池。

如何在 data.table 中将 fread 阅读速度与快速 gsub-ing 结合起来?

我会删除 R 之外的引号(例如,使用 tr 和选项 -d)。

使用 fread 通过 -d 选项从 tr 读取输出:

data.table::fread("tr -d \'\"\' < INPUT.txt")