尝试将.csv文件读入R时出现“不完整的最后一行”警告

我想读取一个.csv文件到R和使用这个公式:

pheasant<-read.table(file.choose(),header=TRUE,sep=",") 

我收到这个警告信息:

 "incomplete final line found by readTableHeader on 'C:\Documents and Settings..." 

有一些事情我认为可能会引起这个警告,但不幸的是,我不太了解R来自己诊断问题,所以我想我会在这里发布,希望别人能为我诊断!

  • .csv文件最初是一个Excel文件,我保存为.csv格式
  • 该文件包含三列数据
  • 每个数据列具有不同的长度,即每列中有不同数量的值
  • 我想一次比较两列的平均值(使用t检验或等价的,取决于正态/非正态分布),例如,在第1列值和第2列值之间进行t检验,第1列和第3列值的testing等

任何帮助或build议将被认真感激!

该消息表明文件的最后一行不以行尾(EOL)字符(换行符( \n )或回车+换行符( \r\n ))结束。 这个信息的初衷是警告你,文件可能不完整, 大多数数据文件都有EOL字符作为文件中最后一个字符。

补救措施很简单:

  1. 打开文件
  2. 导航到文件的最后一行
  3. 将光标放在该行的末尾
  4. 返回
  5. 保存文件

你真的确定你select了.csv文件而不是.xls文件吗? 我只能重现错误,如果我尝试读取.xls文件。 如果我尝试读取.csv文件或任何其他文本文件,则不可能重新创build您所得到的错误。

 > Data <- read.table("test.csv",header=T,sep=",") > Data <- read.table("test.xlsx",header=T,sep=",") Warning message: In read.table("test.xlsx", header = T, sep = ",") : incomplete final line found by readTableHeader on 'test.xlsx' 

readTableHead是提供错误的c函数。 它试图读取前n行(标准的前5)来确定数据的types。 其余的数据使用scan()读入。 所以问题是文件的格式。

找出的一种方法是将工作目录设置为文件所在的目录。 这样你就可以看到你读取的文件的扩展名。我知道在Windows上它没有显示标准,所以你可能会认为它是csv,而不是。

接下来要做的事情是在记事本或写字板(或其他编辑器)中打开文件,并检查格式是否与我的文件test.csv

 Test1,Test2,Test3 1,1,1 2,2,2 3,3,3 4,4, 5,5, ,6, 

这个文件会给你下面的数据框:

 > read.table(testfile,header=T,sep=",") Test1 Test2 Test3 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 NA 5 5 5 NA 6 NA 6 NA 

excel保存的csv格式用逗号分隔所有单元格。 空单元格没有价值。 read.table()可以很容易地处理这个,并且可以很好地识别空单元格。

这个问题很容易解决; 这是因为最后一行必须是空的。

说,如果你的内容是

 line 1, line2 

改变它

 line 1, line2 (empty line here) 

今天我遇到了这样的问题,当我试图用R来读取JSON文件时,使用命令“json_data <-fromJSON(paste(readLines(”json01.json“),collapse =”“))”; 我用上面的方法来解决它。

我收到了同样的信息。 我的修复包括:我删除了.csv文件中的所有附加工作表(选项卡),删除了非数字字符,使用标准语言将该文件重新命名为逗号分隔符并加载到R v 2.15.0中:

文件名<-read.csv( “文件名”,首标= TRUE)

作为一个额外的保障,我closures了软件,并重新打开之前我加载CSV。

在各种欧洲语言环境中,由于逗号字符用作小数点,因此应该使用read.csv2函数。

我已经解决了这个问题,将readEtable参数中的编码从fileEncoding =“UTF-16”更改为fileEncoding =“UTF-8”。

当我有一个单引号作为标题的一部分时,我遇到了这个问题。 当我删除它( Jimmys data相应的列标题从Jimmy's data重命名为Jimmys data ),该函数没有返回警告。

我意识到已经提供了几个答案,但还没有真正的修复。

如上所述,原因是CSV文件末尾缺less“行尾”。

虽然真正的Fix应该来自Microsoft,但是走动是用文本编辑器打开CSV文件,并在文件末尾添加一行(也就是按回车键)。 我使用ATOM软件作为文本/代码编辑器,但几乎所有基本的文本编辑器都可以。

同时,请将错误报告给Microsoft。

问:在我看来,这是一个2016年的办公室问题。 有没有人在PC上有这个问题?

当我将.xlsx重命名为.csv时,您所描述的问题就发生在我身上。

对我来说固定的是“另存为”,然后再次保存为.csv

在文本wrangler或记事本+ +中打开文件,并显示在文本编辑器中,你显示不可见的格式。 这样,你可以看到新的行或制表符字符通常Excel将添加各种制表符在错误的地方,而不是最后一个新的行字符,但你需要显示符号来看到这一点。

我的工作是在文本编辑器中打开csv文件,删除最后一个值的过多逗号,然后保存文件。 例如对于以下文件

 Test1,Test2,Test3 1,1,1 2,2,2 3,3,3 4,4, 5,5, ,6,, 

删除6之后的逗号,然后保存文件。