我正在尝试阅读csv文件列表。这些csv文件有&#34 ;;"作为它的分隔符。 在读取csv文件失败后,我尝试将其中一个csv文件中的内容剪切成几个部分,并读入每个部分的值以查看问题的原因。
这个方法对我有用,我找到了一个适用于我的数据的工作代码:
y <- data.table(read.table(filenames[i], header = FALSE, sep = ";",
comment.char = "", fill = TRUE, check.names = FALSE,
blank.lines.skip = TRUE))
但我遇到了另一个问题。当我将原始数据复制并粘贴到csv文件中并运行代码时,它工作正常。但是,当我尝试在原始csv文件上运行相同的代码时,它会给我“嵌入的空值”#39;警告。
在外部,原始数据和复制的数据看起来完全相同,并且它们都以csv格式保存。因此,我很难找到导致警告的原因以及我原来的csv文件和复制的csv文件之间的区别。
数据类似于以下内容:
Measurement Reports export file;
;
Comment;Time ;E_MW;E_PF;INV11_ACKW;INV12_ACKW;INV21_ACKW;INV22_ACKW;INV31_ACKW;INV32_ACKW;INV41_ACKW;INV42_ACKW;INV51_ACKW;INV52_ACKW;INV61_ACKW;INV62_ACKW;M1_ATEMP;M1_HUMID;M1_PYRA1S;M1_PYRA2S;M1_PYRA3S;M1_WDIREC;M1_WSPEED;
;
;00:00;-0.02 ;-0.36 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;22.32 ;82.32 ;0.00 ;0.00 ;0.00 ;234.83 ;0.00 ;
;00:01;-0.02 ;-0.36 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;22.26 ;82.57 ;0.00 ;0.00 ;0.00 ;214.93 ;0.00 ;
;
;Sum;-1.41 ;-22.10 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;1330.89 ;5098.24 ;0.00 ;0.00 ;0.00 ;11246.06 ;28.48 ;
;Mean;-0.02 ;-0.37 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;22.18 ;84.97 ;0.00 ;0.00 ;0.00 ;187.43 ;0.47 ;
;
任何帮助将不胜感激。谢谢。
答案 0 :(得分:20)
解决方案,由@G发表评论。 Grothendieck,是使用fileEncoding=
参数来指定正确的编码,根据OP,结果是UTF16LE或UCS-2LE。
将此作为答案写下来,这样就不会丢失评论。
答案 1 :(得分:4)
我最近遇到类似问题,收到的错误信息如下:
1:在read.table中(file = file,header = header,sep = sep,quote = quote,:第3行似乎包含嵌入的空值。
我尝试重置 fileEncoding 参数但未能删除警告。幸运的是,我遇到了link中提到的 SkipNul 参数,并将其设置为 T 为我工作。
答案 2 :(得分:0)
我同意fileEncoding参数可以提供帮助的其他用户。还要确保检查功能和文件类型是否正确。错误地尝试使用read.csv()
来加载Excel文件时遇到了这个错误(当我切换到read.xlsx()
时,该错误很快得到解决)。
答案 3 :(得分:-1)
您只需要正确创建csv文件,不要将“.Numbers”文件重命名为“.csv”。打开.Numbers文件,将其导出到csv,然后在R环境中键入以下代码:
test&lt; - read.csv(“MyFile.csv”)