R 读取csv,但跳过字符串中的转义逗号

R 读取csv,但跳过字符串中的转义逗号,r,file,readr,R,File,Readr,我有一个如下的csv文件: id,name,value 1,peter,5 2,peter\,paul,3 如何读取此文件并告诉R,“\,”不表示新列,仅表示“,” 我必须加上这个文件有400mb 谢谢您可以使用readLines()将文件读入内存,然后对其进行预处理。如果您愿意将非分隔逗号转换为其他逗号,可以执行以下操作: > read.csv(text = gsub("\\\\,", "-", readLines("dat.csv"))) id name valu

我有一个如下的csv文件:

id,name,value
 1,peter,5
 2,peter\,paul,3
如何读取此文件并告诉R,
“\,”
不表示新列,仅表示
“,”

我必须加上这个文件有400mb


谢谢

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

> read.csv(text = gsub("\\\\,", "-", readLines("dat.csv")))
  id       name value
1  1      peter     5
2  2 peter-paul     3
另一个选项是利用data.table中的
fread
函数可以执行系统命令作为其第一个参数这一事实。然后,您可以在读入文件之前对文件执行类似于
sed
的操作(可能更快,也可能更快):


然后,您可以始终使用
gsub()
将临时的
-
分隔符转换回逗号。

使用read.csv和sep=“,”,类似于此。第一个解决方案对于大文件来说太慢了,我不得不在4个多小时后中止。第二个失败,当它遇到这样一条观察线:123,time=\\,5。错误为
预期sep(','),但在读取数据时,新行或EOF结束第987841行的字段3:
@spore234您应该能够修改sed表达式以允许多个斜杠,可能使用:
“sed-e's/+,/-/g'dat.csv”
> data.table::fread("sed -e 's/\\\\\\,/-/g' dat.csv")
   id       name value
1:  1      peter     5
2:  2 peter-paul     3