首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当试图将.csv文件读取到R中时,“不完整的最后一行”警告

当试图将.csv文件读取到R中时,“不完整的最后一行”警告
EN

Stack Overflow用户
提问于 2011-05-13 10:35:42
回答 16查看 202.5K关注 0票数 133

我正在尝试将一个.csv文件读入R中,并在使用以下公式时:

代码语言:javascript
运行
复制
pheasant<-read.table(file.choose(),header=TRUE,sep=",")

我收到这样的警告信息:

代码语言:javascript
运行
复制
"incomplete final line found by readTableHeader on 'C:\Documents and Settings..."

有几件事我认为可能导致了这一警告,但不幸的是,我不知道足够的R来诊断自己的问题,所以我想我会张贴在这里,希望其他人可以为我诊断它!

  • .csv文件最初是一个Excel文件,我将其保存为.csv格式。
  • 该文件包含三列数据。
  • 每个数据列都有不同的长度,即每列中有不同数量的值。
  • 我希望一次比较两列的均值(根据正态分布/非正态分布而定),例如,列1值和列2值之间的t检验,然后对第1列和第3列值进行t检验等。

如有任何帮助或建议,将不胜感激!

EN

回答 16

Stack Overflow用户

发布于 2017-05-04 09:16:05

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

比如说,如果你的内容是

代码语言:javascript
运行
复制
line 1,
line2

将其更改为

代码语言:javascript
运行
复制
line 1,
line2
(empty line here)

今天,当我试图使用R读取JSON文件时,我遇到了这样的问题,方法是使用以下命令:

json_data<-fromJSON(paste(readLines("json01.json"), collapse=""))

我用我的上述方法来解决这个问题。

票数 21
EN

Stack Overflow用户

发布于 2011-05-13 13:06:14

是否确实选择了.csv文件而不是.xls文件?只有尝试在.xls文件中读取时,才能再现错误。如果我试图读取一个.csv文件或任何其他文本文件,就不可能重新创建您得到的错误。

代码语言:javascript
运行
复制
> 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行)来确定数据的类型。其余的数据是用scan()读取的。所以问题是文件的格式。

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

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

代码语言:javascript
运行
复制
Test1,Test2,Test3
1,1,1
2,2,2
3,3,3
4,4,
5,5,
,6,

此文件将为您提供以下数据:

代码语言:javascript
运行
复制
> 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()可以很容易地处理这个问题,并且能够很好地识别空单元。

票数 15
EN

Stack Overflow用户

发布于 2018-05-01 22:26:53

首先使用readLines() (与warn = FALSE一起)将文件读入字符向量。

之后,使用text =选项将向量读入带有read.table()的数据帧中。

代码语言:javascript
运行
复制
    pheasant <- read.table( 
        text = readLines(file.choose(), warn = FALSE), 
        header = TRUE,  
        sep = "," 
    )
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5990654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档