仅保留R中第二个花样之前的部分

时间:2019-02-26 08:53:02

标签: r split gsub

如何使用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

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

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]*_),第二个是后面的模式。保留第二个匹配组。希望这个帮助!