重命名data.table的问题

时间:2017-07-13 12:27:43

标签: r data.table rename

所以我有以下data.table问题:

library(data.table)
dt1<-data.table(V1=runif(10),V2=sample(10),ID=1:10)
     dt1
                V1 V2 ID
     1: 0.26880759 10  1
     2: 0.59148373  9  2
     3: 0.15106101  8  3
     4: 0.64780998  5  4
     5: 0.09067745  7  5
     6: 0.57337100  2  6
     7: 0.17920313  3  7
     8: 0.87948063  4  8
     9: 0.25167438  1  9
    10: 0.82715461  6 10

我希望执行列重命名(除了一列,即&#34; ID&#34;)。虽然names(dt1[,-"ID"])可以正常工作但是产生:

[1] "V1" "V2"

以下命令失败:

   names(dt1[,-"ID"])<-c("souksou","mouksou")
   Error in -"ID" : invalid argument to unary operator

当然,问题是通过以下方式绕过:

names(dt1)[!(names(dt1)  %in% "ID")]<-c("souksou","mouksou")

names(dt1)
[1] "souksou" "mouksou" "ID"

我向社区提出的问题是为什么会发生这种情况。

1 个答案:

答案 0 :(得分:3)

将我的评论放在一个更明显的答案中:在中,函数setnames允许通过引用重命名列(所有这些列或其子集)。

尝试?setnames查看其工作原理。基本上,你需要给函数3个参数xoldnewx是你的data.tableold是名字或者您想要重命名的变量的索引(如果要重命名所有变量,old可以是新名称,而您不需要提供new)和{{1}是新的列名。

在您的示例中,您需要执行以下操作:

new