只保留 R 中第 2 个模式之前的部分

Only keep part before the 2th pattern in R

如何使用 R 删除数据框中 second pattern 出现之前的所有内容?

我用过:

for (i in 1:length(df1)){
  df1[, i]<- gsub(".*_", "",df1[, i])
}

但我想有更好的方法可以将其应用于所有数据帧吗?

这是数据框中值的示例:

name_000004_A_B_C
name_00003_C_D

并获得

A_B_C
C_D

感谢您的帮助。

x <- c("name_000004_A_B_C", "name_00003_C_D")
gsub("(name_[0-9]*_)(.*)", "\2", x)
##[1] "A_B_C" "C_D" 

更普遍:

gsub("([a-z0-9]*_[a-z0-9]*_)(.*)", "\2", x)
#[1] "A_B_C" "C_D" 

全局替换考虑了两个匹配组模式,第一个是模式 (name_[0-9]*_),第二个是后面的任何模式。它保留第二个匹配组。希望这个hepls!