0

我在将大型 csv 文件(17m 行)导入 R 时遇到问题。我尝试使用两者readr::read_csvdata.table::fread但两者都在创建额外的列。这是因为其中一列有一些包含逗号的文本。当我用 阅读文件时readLines,我可以看到文本中的逗号前面有一个双反斜杠,因此它们应该被忽略,但是我无法让任何一个包忽略它们......有什么建议吗?一个例子是:

id,title
 1,great expectations
 2,great expectations\\, the sequel
4

1 回答 1

1

这不是一个漂亮的解决方案,但您可以利用data.table::fread' 将 shell 命令传递给input并预处理 csv 文件的能力,以将每行中的第一个逗号与另一个分隔符交换:

library(data.table)
fread(input = "sed 's/,/_/' foo.csv", sep = "_")

##    id                              title
## 1:  1                 great expectations
## 2:  2 great expectations\\\\, the sequel

在此示例中,我使用sed将每行中的第一个逗号与下划线交换,然后将其传递给fread().

这是假设您使用的sed是可用的类 unix 环境。

于 2017-05-22T15:55:12.197 回答