如何解决它。错误:数据[[rowvar]]出错:尝试选择少于一个元素

时间:2015-11-15 12:50:56

标签: r

为了简化我的问题,我将首先展示一个数据文件的示例。

数据文件:

clo1  clo2    clo3
1     2       3
1     2       3
5     6       7

R代码:

read.table("demo.txt", header = TRUE, sep = "\t", row.names = "a")

输出:

  
> Error in data[[rowvar]] : attempt to select less than one element
In addition: Warning message:
In read.table(file = file, header = header, sep = sep, quote = quote,  :
  incomplete final line found by readTableHeader on '../demo.txt'

2 个答案:

答案 0 :(得分:5)

问题是由row.names =“a”引起的。数据集必须具有不同的行名称。如果您尝试将所有行命名为“a”,则会收到错误。如果您有一个包含要使用的行名称的向量,则可以执行此操作。

> a <- c("A", "B", "C")
> read.table("demo.txt", header = TRUE, row.names = a)
  clo1 clo2 clo3
A    1    2    3
B    1    2    3
C    5    6    7

答案 1 :(得分:0)

在文档(https://stat.ethz.ch/R-manual/R-devel/library/utils/html/read.table.html)中,row.names是:

  

行名的向量。这可以是给出实际行的向量   名称或单个数字,以提供表的列,其中   包含行名,或给出字符串名称的字符串   包含行名称的表格列。

     

如果有标题,并且第一行包含的字段少于   列数,输入中的第一列用于   行名。否则,如果缺少row.names,则会对行进行编号。

     

使用row.names = NULL强制行编号。 row.names缺失或为NULL   生成被认为是“自动”的行名(而不是   由as.matrix保存)。

因此,您可以提供列名(例如示例中的“ clo1”),也可以提供每一行的名称向量(如Patrick Li所指出的)。我认为您的书是正确的。