我正在使用RStudio 0.99.489和R3.2.2的Mac。我有一个1GB的csv文件,虽然不是特别大,但如果我尝试使用read.csv导入它仍需要大约5分钟并且我有很多这个大小的文件,所以我尝试了fread()方法。从之前的问题中得知,这个错误可能是由于日期中缺少值造成的(日期列的正常条目看起来像'03May1995:15:31:50',然而,在错误发生的地方,它看起来像'05May')。
如'Embedded nul in string' error when importing csv with fread中提到的,我尝试使用sed 's/\\0//g' mycsv1.csv > mycsv2.csv
,但仍然弹出相同的错误消息。
sed -i 's/\\0//g' /src/path/mycsv.csv
对我来说根本行不通,终端报告此命令行的错误。(我对这些命令行不是很熟悉,所以我不理解这些背后的逻辑。)
我尝试了
file <- "file.csv"
tt <- tempfile() # or tempfile(tmpdir="/dev/shm")
system(paste0("tr < ", file, " -d '\\000' >", tt))
fread(tt)
从使用fread()导入8GB的CSV文件时出现"字符串中的嵌入零"的问题,我猜测它删除了存在缺失值的条目,因为当我运行
fread(tt)
时,R会提示。Error in fread(tt) :
Expecting 5 cols, but line 5060627 contains text after processing all cols. It is very likely that this is due to one or more fields having embedded sep=',' and/or (unescaped) '\n' characters within unbalanced unescaped quotes.
之后,我尝试了iconv -f utf-16 -t utf-8 myfile1.csv > myfile2.csv
,因为似乎这是由于fread
无法理解utf-16所导致的问题,并且可能存在命令行有问题的情况。但结果只是给我一个带有随机符号的电子表格。
然后我看到了这个:
vim filename.csv
:%s/CTRL+2//g
ESC #TO SWITCH FROM INSERT MODE
:wq # TO SAVE THE FILE
从Error with fread in R--embedded nul in string: '\0'出发,但在我键入
vim filename.csv
后,终端只会读取整个电子表格,我无法键入第二个命令(:%s/CTRL+2//g
)。我不太理解这些命令行,所以也许需要对我的情况进行一些调整。感谢您的帮助!