R-从[符号后的列名称中删除文本

时间:2019-02-06 21:52:57

标签: r

我在R中有一个称为色相的数据框

它有3列,分别为color1 [primary],color2 [secondary],color3 [terary]

我尝试使用sub / gsub等,但是没有找到解决方法

有人可以帮助吗?

names(hues) = gsub(pattern = "\\[*", replacement = "", x = names(hues))

我有这个

color1 [primary]     color2 [secondary]    color3 [tertiary]
blue                pink                  red

我想要这个

color1              color2                color3 
blue                pink                  red

2 个答案:

答案 0 :(得分:0)

您需要在.之前添加*,以指示您要替换[之后的任意数量的字符。也请在\\[之前添加一个空格以删除该空格。我将列名变成了一个字符向量,但是将ex数据帧中的names(hues)替换为hues,并显然将其分配回来,因为它只是在此处打印输出。

ex <- c("color1 [primary]", "color2 [secondary]", "color3 [tertiary]")
gsub(" \\[.*", "", ex)
#> [1] "color1" "color2" "color3"

reprex package(v0.2.1)于2019-02-06创建

答案 1 :(得分:0)

这在这里是一个过大的杀伤力,但是也许也知道使用stringr的解决方案可能会有用:

library(stringr)

names(hues) = word(names(hues), 1)

输出:

  color1 color2 color3
1   blue   pink    red

使用的数据:

hues <- data.frame("color1 [primary]" = c("blue"), 
                 "color2 [secondary]" = c("pink"), 
                 "color3 [tertiary]" = c("red"), check.names = F)