'names'属性必须与向量长度相同

33

在R中遇到错误。

    Error in names(x) <- value : 
      'names' attribute must be the same length as the vector

这个错误是什么意思?


2
你能提供一个最小可重现的示例吗? - Dason
2
是的,我强烈怀疑你定位错误的代码行不正确...因此需要更多上下文信息!尝试在出现错误后键入 traceback() - Tommy
2
你查看了这个讨论吗:https://dev59.com/yGYq5IYBdhLWcg3w2EBi - New High Score
8个回答

25

按照 @Chris W 的精神,尝试复制您遇到的确切错误。提供一个例子可能有帮助,但也许您正在做以下操作:

  x <- c(1,2)
  y <- c("a","b","c")
  names(x) <- y

Error in names(x) <- y : 
  'names' attribute [3] must be the same length as the vector [2]
我怀疑你试图给一个比名称向量(y)更短的向量(x)命名。

3

根据循环中你要做什么,%in%操作符返回向量的事实可能是一个问题;考虑以下简单例子:

c1 <- c("one","two","three","more","more")
c2 <- c("seven","five","three")

if(c1%in%c2) {
    print("hello")
}

接下来会发出以下警告:

Warning message:
In if (c1 %in% c2) { :
  the condition has length > 1 and only the first element will be used

如果您if语句中的某些内容依赖于特定数量的元素,并且它们不匹配,则可能会出现您所看到的错误。

2

我希望通过下面的例子来解释错误:

> names(lenses)
[1] "X1..1..1..1..1..3"

names(lenses)=c("ID","年龄","视力","散光","泪液","分类") 出现错误:Error in names(lenses) = c("ID", "年龄", "视力", "散光", "泪液", "分类") : 'names'属性[6]的长度必须与向量[1]的长度相同

出现错误是因为属性数量不匹配。我只有一个属性,但尝试添加6个名称。在这种情况下,就会发生错误。请参见以下正确的内容:>>>>

> names(lenses)=c("ID")
> names(lenses)

[1] "ID"(身份证)

现在没有错误。

希望这能帮到你!


1

我曾经遇到过这样的错误并解决了它。你的数据集可能存在缺失值。每列观测值的数量也必须相同。


1
我曾经遇到过这个问题,由于一个经过缩放的数值变量没有以数字形式返回,而是以矩阵形式返回。将任何转换后的变量恢复为as.numeric(),它应该可以正常工作。

0

我因为一个愚蠢的原因遇到了同样的错误,我认为是这个原因:

在R Studio中工作时,如果您尝试将新对象分配给现有名称,并且您当前使用View()打开具有现有名称的对象,则会引发此错误。

关闭“View”面板,然后它就可以正常工作了。


-1
我犯的错误是在一个循环中尝试重命名一个我在SQL中不再选择的列,导致了这个错误。这也可能是因为你试图在一个你“计划”选择的列中做同样的事情。确保你想要更改的列实际上存在。

-1
对我来说,这个错误是因为我的一些数据标题有两个名字,我将它们合并成一个名字,然后一切都顺利了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接