【问题标题】:How to solve it. error:Error in data[[rowvar]] : attempt to select less than one element如何解决它。错误:数据[[rowvar]] 中的错误:尝试选择少于一个元素
【发布时间】:2015-11-15 12:50:56
【问题描述】:

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

数据文件:

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

R 代码:

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

输出:

> 数据[[rowvar]] 中的错误:尝试选择少于一个元素 另外:警告信息: 在 read.table(file = file, header = header, sep = sep, quote = quote, : '../demo.txt' 上的 readTableHeader 发现的最后一行不完整

【问题讨论】:

  • 是的。我只是按照这本书的演示。我不明白它的目的地。
  • 我不知道你在看哪本书。我指的是help("read.table")read.table 函数的文档。
  • 从事数据科学。我知道你的推断。非常感谢。

标签: r


【解决方案1】:

问题是由 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

【讨论】:

  • 谢谢。但我试过这种方法。因为这是我的书的演示,我只想确定是什么导致了这个错误。现在,我知道这是书的错误。
  • 这个答案错了​​! row.names 也可以是一列的名称,例如,如果您尝试“clo1”,它会起作用
【解决方案2】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2015-07-13
    • 2023-04-04
    • 2016-06-10
    • 2016-01-24
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    相关资源
    最近更新 更多