尝试将.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字符作为文件中最后一个字符。
补救措施很简单:
- 打开文件
- 导航到文件的最后一行
- 将光标放在该行的末尾
- 按返回
- 保存文件
你真的确定你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之后的逗号,然后保存文件。