【问题标题】:Remove part of column name删除部分列名
【发布时间】:2016-03-23 10:58:42
【问题描述】:

我有一个df 的列名是a.b.c.v1, d.e.f.v1, h.j.k.v1,并且想从df 的所有列名中删除v1

我想我应该使用gsub,但我的试验没有成功。

【问题讨论】:

标签: regex r


【解决方案1】:

我们可以使用sub 删除字符串末尾的.v1。 (如果我们只需要删除'v1',只需从模式中删除\\. 即可匹配,但我认为列名末尾的. 可能看起来不太好)。在这里,我们匹配点 (\\.) 后跟多个不是点的字符 ([^.]+) 直到字符串结尾 ($) 并将其替换为 ""

colnames(df) <- sub('\\.[^.]+$', '', colnames(df))
colnames(df)
#[1] "a.b.c" "d.e.f" "h.j.k"

【讨论】:

  • 是的,它可以工作,但它只返回删除 v1 的列名列表。但我想保留 df 结构。
  • @Olga 抱歉,我不确定我是否理解您的评论。这将删除带有.v1 的字符串的结尾。由于我们只处理列名,这如何改变 'df' 的结构?
  • 是的,但它返回包含列名的字符向量,其中删除了 v1
  • 查看您的 data.frame。名字应该改了
  • @Olga,检查 head(df),这段代码肯定会从数据框列的名称中删除“.v1”
猜你喜欢
  • 2020-05-14
  • 2017-04-08
  • 1970-01-01
  • 2018-07-18
  • 1970-01-01
  • 1970-01-01
  • 2018-12-25
  • 2017-09-16
  • 2014-10-22
相关资源
最近更新 更多