我在将大型csv文件(17米行)导入R时遇到问题。我已尝试同时使用readr::read_csv
和data.table::fread
,但两者都在创建额外的列。这是因为其中一列包含一些包含逗号的文本。当我用readLines
读取文件时,我可以看到文本中的逗号前面有一个双反斜杠,所以应该忽略它们,但是我不能让任何一个包忽略它们...任何建议?
一个例子是:
id,title
1,great expectations
2,great expectations\\, the sequel
答案 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
可用。