Dre*_*ew 13 regex replace r names
我有一堆colnames
L_1_3
L_2_23
L_3_91
L_3_16
Run Code Online (Sandbox Code Playgroud)
我想使用 _ 后面的最后一位数字用新名称替换这些列名,如下所示:
3
23
91
16
Run Code Online (Sandbox Code Playgroud)
我试过colnames(X) <- gsub("L_\\d\\d_", "", colnames(X))这适用于末尾有两位数的字符串。我想要一个既适用于一位数又适用于两位数的人。
谢谢!
Ian*_*ell 12
这是一个正向预测的选项:
gsub(".+_(?=\\d+$)", "", X, perl = TRUE)
[1] "3" "23" "91" "16"
Run Code Online (Sandbox Code Playgroud)
如果这是适用于您的 2 位数模式,那么您唯一需要做的就是使用 ?
L_\\d\\d?_
Run Code Online (Sandbox Code Playgroud)
如果必须匹配整个模式,则可以使用捕获组并使用锚点来断言字符串的开头^和结尾$,并在替换中使用该组。
^L_\\d\\d?_(\\d+)$
Run Code Online (Sandbox Code Playgroud)
在零件中
^ 字符串开始 L_ 匹配 L_ \d 匹配一个数字 \d? 匹配一个数字并重复 0 或 1 次 _ 比赛 _ ( 捕获组 1 \d+ 匹配一个数字并重复 1 次或多次 ) 关闭群组 $ 字符串结尾
X <- c("L_1_3", "L_2_23", "L_3_91", "L_3_16")
gsub("^L_\\d\\d?_(\\d+)$", "\\1", X)
Run Code Online (Sandbox Code Playgroud)
输出
[1] "3" "23" "91" "16"
Run Code Online (Sandbox Code Playgroud)