我的列名与以下类似
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)
,但不确定如何设置可变的开始/停止参数。
答案 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"