我正在尝试重命名 data.frame 中的列。但是,当我尝试在 R 中运行名称或 colnames 命令时,我不断收到以下错误

Error in names(HourlyTotal)["ZoneElectric"] <- "Meas.Elec" :
  'names' attribute [13] must be the same length as the vector [12]

这是我试图运行的代码:
names(HourlyTotal)["ZoneElectric"] <- "Meas.Elec"

但是,如果我使用列号而不是列名,代码就可以正常工作。
names(HourlyTotal)[3] <- "Meas.Elec"

任何想法为什么会发生这种情况?我感谢任何帮助,因为这让我难倒了一段时间。

最佳答案

当您编写 names(HourlyTotal)["ZoneElectric"] 时,您是在要求 R 为您提供来自向量 "ZoneElectric" 的名为 names(HourlyTotal) 的元素

然而, names(HourlyTotal) 是一个未命名的向量。

你想要的(我猜/假设)是 names(HourlyTotal) 的元素,其 "ZoneElectric" 。如果您碰巧知道它出现在向量中的哪个位置,那么您可以使用数字索引,正如您所发现的(即 names(HourlyTotal)[3] )。但是,更强大的解决方案是过滤该特定值:

因此,使用:

names(HourlyTotal)[names(HourlyTotal) == "ZoneElectric"] <- ...

# Instead of
#    names(HourlyTotal)["ZoneElectric"] <- ...

或者您可以使用 data.table 包中的 setnames:
library(data.table)
setnames(HourlyTotal, old="ZoneElectric", new="NewName")

关于r - colnames 命令产生错误 : attribute [13] must be the same length as the vector [12],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19527339/

10-12 13:31