修剪R数据帧中列的特殊字符

时间:2018-05-01 19:57:11

标签: r

我在R中有一个数据框如下 -

some_string <- c("::hello:world:", ":hello:world:again:::",":::::::hello::::")
df = as.data.frame(some_string)
df

            some_string
1        ::hello:world:
2 :hello:world::::again:::
3      :::::::hello::::

如果多次出现,我希望在这一列之间只有:个特殊字符。输出数据框应为 -

           some_string
1          hello:world
2      hello:world:again
3           hello

基本上,我需要由:分隔的字符串,但不需要在字符串的前面和后面。

1 个答案:

答案 0 :(得分:3)

您可以使用

gsub("^:+|:+$", "", some_string)
# [1] "hello:world"          "hello:world::::again" "hello"  

在这里,我们使用^$将匹配项锚定到字符串的开头或结尾,并使用|来匹配开头“或”结尾处的匹配项。

要将多个冒号折叠成一个冒号,您也可以运行

gsub(":+", ":", gsub("^:+|:+$", "", some_string))
# [1] "hello:world"       "hello:world:again" "hello"

只用一个替换剩余重复冒号的任何实例。