R data.table - fread()中的错误:字符串中的嵌入式nul" \ 0 \ 0 \ 0 ... \ 000"

时间:2017-09-24 15:38:20

标签: r csv sed data.table

我正在尝试使用fread包中的data.table命令读取CSV文件,但我遇到了"嵌入式字符串"错误。

我在Linux操作系统(Antergos)中,所以也欢迎任何解决此问题的shell脚本。

我正在尝试阅读的CSV文件位于我的Dropbox through this link(30MB压缩文件)中。

可重复的例子很简单:

fread("20170630_Remuneracao.csv", encoding = 'Latin-1', dec = ',')

Error in fread("r.csv", encoding = "Latin-1", dec = ",") : 
  embedded nul in string: '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\000'

尝试了方法:

  1. sed 's/\\0//g' 20170630_Remuneracao.csv > 20170630_Remuneracao.csvas suggested here
    当我再次读取文件时,它会给出与以前相同的错误。

  2. file <- "file.csv" tt <- tempfile() # or tempfile(tmpdir="/dev/shm") system(paste0("tr < ", file, " -d '\\000' >", tt)) fread(tt) 来自this answer。 上面的代码解决了空字符串错误,但引入了新错误

    Expected sep (' ') but new line or EOF ends field 28 on line 28333 when reading data

  3. 有什么建议吗? 谢谢!

    修改
    阅读this answer后,我怀疑我可能会遇到同样的问题。所以我用LibreOffice Calc打开文件并用适当的CSV格式再次保存。通过这种方式可行,但由于它不是一个合适的解决方案,我会将这个问题保持开放,希望能够以编程方式完成解决方案。

0 个答案:

没有答案