6

初步信息 操作系统:Windows XP Professional Version 2002 Service Pack 3;R版本:R 2.12.2 (2011-02-25)

我正在尝试使用该read.delim()函数将 30,000 行 x 80 列、制表符分隔的文本文件读入 R。此文件确实具有具有以下命名约定的列标题:“_”。我用来尝试读取数据的代码是:

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)

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

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 列,每列中的零计数如下:

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

任何人都可以帮助确定我收到上述错误消息的原因吗?任何帮助将不胜感激。

4

3 回答 3

7

问题的原因是您对col.names=TRUE参数的使用。这应该用于手动指定结果数据框的列名,因此必须是与输入中的列具有相同长度的向量,每列一个名称。

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

更多信息可在 的帮助页面上找到read.delim

于 2011-09-02T13:48:08.767 回答
5

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

于 2011-09-02T13:50:26.337 回答
0

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

read.csv("filepath")
于 2015-11-29T06:34:22.767 回答