为了简化我的问题,我将首先展示一个数据文件的示例。
数据文件:
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'
答案 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所指出的)。我认为您的书是正确的。