R 读取csv,但跳过字符串中的转义逗号
我有一个如下的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
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