【问题标题】:'embedded nul in string' with fread (tried all other method still couldn't solve)'embedded nul in string' with fread(尝试了所有其他方法仍然无法解决)
【发布时间】:2016-03-28 06:04:45
【问题描述】:

我正在使用带有 RStudio 0.99.489 和 R3.2.2 的 Mac。我有一个 1GB 的 csv 文件,它不是很大,但如果我尝试使用 read.csv 导入它仍然需要大约 5 分钟,而且我有很多这种大小的文件,所以我尝试了fread()。通过阅读前面的问题,我了解到此错误可能是由于日期上的缺失值(日期列的正常条目类似于 '03May1995:15:31:50',但是,在发生错误的地方,它看起来像'5 月 5 日')。

我尝试了'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)

来自'Embedded nul in string' when importing large CSV (8 GB) with fread(),我猜它删除了缺少值的条目,因为当我运行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 &gt; 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),我还是不太明白那些命令线,所以也许我需要对我的情况进行一些调整。

感谢您的帮助!

【问题讨论】:

    标签: r vim sed data.table fread


    【解决方案1】:

    试试

    sed -i 's/\x0//g' my_file
    

    cat my_file|tr -d '\000' > new_file
    

    【讨论】:

    • 对于 sed -i 's/\x0//g' my_file,终端返回: sed: 1: "my_file.csv": 无效命令代码 C. 对于第二个,终端返回 "usage : tr [-Ccsu] string1 string2 tr [-Ccu] -d string1 tr [-Ccu] -s string1 tr [-Ccu] -ds string1 string2" 并且仍然显示'embedded nul in string'的相同错误消息。
    • 这是一个csv文件,我用的是mac,我在终端试了
    • 用你的文件路径替换“my_file”
    • 哦!我已经在存储数据的目录中了,还需要放入路径吗?
    • 我不知道文件是否在子目录中..您可以将文件从显示窗口拖到应该放置的shell中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    • 2019-08-16
    • 2012-02-01
    相关资源
    最近更新 更多