首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >read.delim() -错误“列多于列名”和“标题和‘col.name”的长度不同“

read.delim() -错误“列多于列名”和“标题和‘col.name”的长度不同“
EN

Stack Overflow用户
提问于 2011-09-02 13:30:44
回答 3查看 18.5K关注 0票数 6

初步信息 OS: Windows专业版2002 Service 3;R版本:R2.12.2 (2011-02-25)

我试图使用read.delim()函数将30,000行由80列和制表符分隔的文本文件读入R。该文件的列标题具有以下命名约定:"_“。我尝试读取数据的代码是:

代码语言:javascript
运行
复制
cc <- c("integer", "character", "integer", rep("character", 3), 
        rep("integer", 73))

example_data <- read.delim(file = 'C:/example.txt', row.names = FALSE,
                           col.names = TRUE, as.is = TRUE, colClasses = cc)

提交此命令后,将收到以下错误消息:

代码语言:javascript
运行
复制
Error in read.table(file = file, header = header, sep = sep, quote = quote,  : 
more columns than column names
In addition: Warning message:
In read.table(file = file, header = header, sep = sep, quote = quote,  :
  header and 'col.names' are of different lengths

可能重要的信息--从第8栏到第80栏,每列的零计数如下:

代码语言:javascript
运行
复制
column 08: 29,000 zeros
column 13: 15,000 zeros
column 19: 500 zeros
column 43: 15,000 zeros
columns 65-80: 29,000 zeros for each column

有人能帮我找出我收到上述错误信息的原因吗?任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-02 13:48:08

造成此问题的原因是使用了col.names=TRUE参数。这应该被手动用于为结果数据帧指定列名,因此必须是一个向量,其长度必须与输入中的列相同,每列一个名称。

如果希望read.delim从文件中获取列名,请考虑使用header=TRUE;您还可能希望重新考虑row.names=TRUE,因为这同样是作为行名的规范而不是从文件中读取它们的指令。

有关read.delim的帮助页提供了更多信息。

票数 7
EN

Stack Overflow用户

发布于 2011-09-02 13:50:26

我最近也犯了同样的错误,它在将文件转换为逗号或分号后消失了,并用read.csv / read.csv2分隔并读取了它。我知道这不是一个完整的答案,但也许你可以去看看。

票数 5
EN

Stack Overflow用户

发布于 2015-11-29 06:34:22

如果要读取字符矩阵,那么首先将文件转换为.csv格式并使用read.csv。除了文件名以外,不要使用任何其他声明。例如;

代码语言:javascript
运行
复制
read.csv("filepath")
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7284146

复制
相关文章

相似问题

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