返回两个字符“。”之间的字符串

时间:2018-07-17 09:36:51

标签: r regex substr names

我的列名与以下类似

names(df_woe)

# [1] "A_FLAG" "woe.ABCD.binned" "woe.EFGHIJ.binned"       
 ...

我想通过删除“祸”来重命名列。和“ .binned”部分,以便返回以下内容

names(df_woe)
# [1] "A_FLAG" "ABCD" "EFGHIJ"       
 ...

我尝试过substr(names(df_woe), start, stop),但不确定如何设置可变的开始/停止参数。

3 个答案:

答案 0 :(得分:2)

另一种可能且可读的正则表达式可以是创建组并在第一个点之后和第二个点之前返回该组,即

gsub("(.*\\.)(.*)\\..+", "\\2", names(df_woe))
#[1] "A_FLAG" "ABCD"   "EFGH"

答案 1 :(得分:1)

nam <- c("A_FLAG", "woe.ABCD.binned", "woe.EFGH.binned")
gsub("woe\\.|\\.binned", "", nam)
[1] "A_FLAG" "ABCD"   "EFGH"  

编辑:一种解决诸如woe..binned.binned

之类的情况的解决方案
gsub("^woe\\.|\\.binned$", "", nam)

答案 2 :(得分:1)

使用stringr软件包的另一种解决方案:

 str_replace_all("woe.ABCD.binned", pattern = "woe.|.binned", replacement = "")
 # [1] "ABCD"