我正在读一个csv文件 .
代码是:
mydata = read.csv("mycsv.csv", header=True, sep=",", quote="\"")
获取以下警告:
警告消息:在扫描中(文件=文件,what = what,sep = sep,quote = quote,dec = dec,:输入中找到的嵌入式nul)
现在我的CSV中的一些单元格缺少由“”表示的值 .
如何编写此代码以便我不会收到上述警告?
可能是没有CRLF的文件,可能只有LF . 尝试检查文件的HEX输出 .
如果是这样 . 尝试通过awk运行该文件:
awk '{printf "%s\r\n", $0}' file > new_log_file
您的CSV可能采用UTF-16编码 . 使用某些基于Windows的工具时,这种情况并不少见 .
您可以尝试加载UTF-16 CSV,如下所示:
read.csv("mycsv.csv", ..., fileEncoding="UTF-16LE")
我有相同的错误消息,并且发现虽然我的文件有一个.csv扩展并在电子表格中没有问题打开,但实际上它们被保存为“所有格式”而不是“文本CSV(.csv)”
您可以尝试使用 skipNul = TRUE 选项 .
skipNul = TRUE
mydata = read.csv("mycsv.csv", quote = "\"", skipNul = TRUE)
来自 ?read.csv
?read.csv
输入流中的嵌入式nuls将终止当前正在读取的字段,每次扫描一次警告一次 . 设置skipNul = TRUE会导致忽略它们 .
它对我有用 .
在这些情况下,请确保您导入的数据没有"#"字符,但如果是这种情况,请尝试使用选项 comment.char="" . 它对我有用 .
comment.char=""
这与编码无关 . 这是读取文件中的空值的问题 . 要处理这个问题,你需要传递“skipNul = TRUE”参数 .
例如:neg = scan('F:/Natural_Language_Processing/negative-words.txt',what ='character',comment.char ='',encoding =“UTF-8”,skipNul = TRUE)
6 回答
可能是没有CRLF的文件,可能只有LF . 尝试检查文件的HEX输出 .
如果是这样 . 尝试通过awk运行该文件:
您的CSV可能采用UTF-16编码 . 使用某些基于Windows的工具时,这种情况并不少见 .
您可以尝试加载UTF-16 CSV,如下所示:
我有相同的错误消息,并且发现虽然我的文件有一个.csv扩展并在电子表格中没有问题打开,但实际上它们被保存为“所有格式”而不是“文本CSV(.csv)”
您可以尝试使用
skipNul = TRUE
选项 .来自
?read.csv
它对我有用 .
在这些情况下,请确保您导入的数据没有"#"字符,但如果是这种情况,请尝试使用选项
comment.char=""
. 它对我有用 .这与编码无关 . 这是读取文件中的空值的问题 . 要处理这个问题,你需要传递“skipNul = TRUE”参数 .
例如:neg = scan('F:/Natural_Language_Processing/negative-words.txt',what ='character',comment.char ='',encoding =“UTF-8”,skipNul = TRUE)