data.table setnames 结合正则表达式

data.table setnames combined with regex

我想根据正则表达式以适当的方式重命名数据 table 中的每一列。

library(data.table)
DT <- data.table("a_foo" = 1:2, "bar_b" = 1:2)
   a_foo bar_b
1:     1     1
2:     2     2

我想从名称中删除“_foo”和 "bar_"。这条经典台词可以解决问题,但它也复制了整个 table.

names(DT) <- gsub("_foo|bar_", "", names(DT))

如何使用 setnames() 执行相同的操作?我有很多变量,所以只写出所有的名字是不行的。

你可以试试

setnames(DT, names(DT), gsub("_foo|bar_", "", names(DT)))

基于 ?setnames 中的用法,即 setnames(x,old,new)

或@eddi 评论

setnames(DT, gsub("_foo|bar_", "", names(DT)))