从大文本中删除引号 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")
我有一个包含 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")