【问题标题】:data.table setnames combined with regexdata.table 集合名称与正则表达式相结合
【发布时间】:2015-02-24 16:23:38
【问题描述】:

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

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_”。这条经典线路可以解决问题,但它也复制了整个表格。

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

如何使用setnames() 做同样的事情?我有很多变量,所以不能只写出所有的名字。

【问题讨论】:

  • 试试setnames(DT, names(DT), gsub("_foo|bar_", "", names(DT)))
  • @akrun 您不需要该表达式中的第二个参数
  • @eddi 是的,它应该可以工作,但我遵循描述中的内容以避免任何混淆。 setnames(x,old,new)
  • 谢谢,它确实有效。我应该试试这个。我现在应该删除我的问题吗?
  • @janosdivenyi 如果您不介意,我可以将此作为解决方案发布

标签: regex r data.table


【解决方案1】:

你可以试试

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

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

或者正如@eddi 评论的那样

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

【讨论】:

  • 诚然,乍一看并不明显,但如果你阅读old:new:下的描述,实际上在?setnames中有解释,new是可选的。
猜你喜欢
  • 1970-01-01
  • 2014-02-25
  • 2011-01-24
  • 1970-01-01
  • 2021-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多