阅读csv但跳过字符串中的转义逗号

时间:2016-04-14 11:07:41

标签: r file readr

我有一个像这样的csv文件:

id,name,value
 1,peter,5
 2,peter\,paul,3

如何阅读此文件并告诉R "\,"未指明新列,仅","

我必须添加该文件有400mb。

由于

1 个答案:

答案 0 :(得分:2)

您可以使用readLines()将文件读入内存,然后对其进行预处理。如果您愿意将非独立逗号转换为其他内容,则可以执行以下操作:

> read.csv(text = gsub("\\\\,", "-", readLines("dat.csv")))
  id       name value
1  1      peter     5
2  2 peter-paul     3

另一种选择是利用data.table中的fread函数可以执行系统命令作为其第一个参数。然后你可以在读取之前对文件执行类似sed操作的操作(可能更快或更快):

> data.table::fread("sed -e 's/\\\\\\,/-/g' dat.csv")
   id       name value
1:  1      peter     5
2:  2 peter-paul     3

您随时可以使用gsub()将临时-分隔符转换回逗号。

相关问题