R在readr或data.table中使用带双反斜杠的逗号导入大型csv

时间:2017-05-22 14:20:01

标签: r regex csv data.table readr

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

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

1 个答案:

答案 0 :(得分: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()

这假设您正在使用类似于unix的环境,sed可用。