首页 文章

使用read.csv()读取csv时获取“在输入中找到的嵌入式nul”

提问于
浏览
25

我正在读一个csv文件 .

代码是:

mydata = read.csv("mycsv.csv", header=True, sep=",", quote="\"")

获取以下警告:

警告消息:在扫描中(文件=文件,what = what,sep = sep,quote = quote,dec = dec,:输入中找到的嵌入式nul)

现在我的CSV中的一些单元格缺少由“”表示的值 .

如何编写此代码以便我不会收到上述警告?

6 回答

  • 33

    可能是没有CRLF的文件,可能只有LF . 尝试检查文件的HEX输出 .

    如果是这样 . 尝试通过awk运行该文件:

    awk '{printf "%s\r\n", $0}' file > new_log_file
    
  • 2

    您的CSV可能采用UTF-16编码 . 使用某些基于Windows的工具时,这种情况并不少见 .

    您可以尝试加载UTF-16 CSV,如下所示:

    read.csv("mycsv.csv", ..., fileEncoding="UTF-16LE")
    
  • 1

    我有相同的错误消息,并且发现虽然我的文件有一个.csv扩展并在电子表格中没有问题打开,但实际上它们被保存为“所有格式”而不是“文本CSV(.csv)”

  • 26

    您可以尝试使用 skipNul = TRUE 选项 .

    mydata = read.csv("mycsv.csv", quote = "\"", skipNul = TRUE)
    

    来自 ?read.csv

    输入流中的嵌入式nuls将终止当前正在读取的字段,每次扫描一次警告一次 . 设置skipNul = TRUE会导致忽略它们 .

    它对我有用 .

  • 0

    在这些情况下,请确保您导入的数据没有"#"字符,但如果是这种情况,请尝试使用选项 comment.char="" . 它对我有用 .

  • 0

    这与编码无关 . 这是读取文件中的空值的问题 . 要处理这个问题,你需要传递“skipNul = TRUE”参数 .

    例如:neg = scan('F:/Natural_Language_Processing/negative-words.txt',what ='character',comment.char ='',encoding =“UTF-8”,skipNul = TRUE)

相关问题