27

卡在 R 中的一个错误。

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

这个错误是什么意思?

4

8 回答 8

23

本着@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]

我怀疑您正在尝试为x比您的名称向量 ( ) 短的向量 ( y) 命名。

于 2012-05-13T00:08:53.310 回答
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 语句中的某些内容取决于特定数量的元素,并且它们不匹配,那么就有可能获得您看到的错误

于 2012-05-12T19:19:05.870 回答
2

我想用下面的例子来解释这个错误:

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

names(lenses)=c("ID","Age","Sight","Astigmatism","Tear","Class") 名称错误(lenses)=c("ID", "Age", "Sight ", "Astigmatism", "Tear", : 'names' 属性 [6] 必须与向量 [1] 的长度相同

由于许多属性不匹配而发生错误。我只有一个,但试图添加 6 个名字。在这种情况下,会发生错误。请参阅下面正确的一个:::::>>>>

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

[1] “身份证”

现在没有错误了。

我希望这个能帮上忙!

于 2018-12-25T22:30:17.183 回答
1

我已经看到了这样的错误,我解决了它。您的数据集中可能存在缺失值。每列中的观察数也必须相同。

于 2016-03-25T01:12:22.267 回答
0

我有这个,由于缩放的数字变量没有作为数字返回,而是作为矩阵返回。将任何转换后的变量恢复为 as.numeric() ,它应该可以工作。

于 2021-06-01T23:34:32.240 回答
0

我犯的导致此错误的错误是尝试在循环中重命名我不再在 SQL 中选择的列。这也可能是由于尝试在您计划选择的列中执行相同的操作而引起的。确保您尝试更改的列确实存在。

于 2017-08-31T16:01:46.443 回答
0

对我来说,这个错误是因为我的一些数据标题是两个名称,我将它们合并为一个名称,一切顺利。

于 2019-08-02T07:14:44.000 回答
0

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

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

关闭对象“查看”面板,然后它就可以工作了。

于 2021-01-21T14:36:47.427 回答