如何从R中的数据帧中删除具有特定图案的字符

如何从R中的数据帧中删除具有特定图案的字符,r,R,我正在尝试从我的data.frame的最后一列中删除以模式“Gm”开头的所有字符 我的data.frame看起来像这样 level logp chr start end CNA Genes 3 1.4 3 100 110 gain Gm5852,Gm5773,Tdpoz4,Tdpoz3,Gm911

我正在尝试从我的data.frame的最后一列中删除以模式“Gm”开头的所有字符

我的data.frame看起来像这样

level   logp  chr   start    end     CNA      Genes                                                           
  3     1.4   3      100     110    gain     Gm5852,Gm5773,Tdpoz4,Tdpoz3,Gm911                      
  4     18.10 3      962      966   gain     Fcgr1,Terc,Gm5703      
level   logp     chr   start    end     CNA           Genes                                                           
   3     1.4      3      100     110    gain    Tdpoz4,Tdpoz3                   
   4     18.10    3      962     966    gain    Fcgr1,Terc   
结果应该是这样的

level   logp  chr   start    end     CNA      Genes                                                           
  3     1.4   3      100     110    gain     Gm5852,Gm5773,Tdpoz4,Tdpoz3,Gm911                      
  4     18.10 3      962      966   gain     Fcgr1,Terc,Gm5703      
level   logp     chr   start    end     CNA           Genes                                                           
   3     1.4      3      100     110    gain    Tdpoz4,Tdpoz3                   
   4     18.10    3      962     966    gain    Fcgr1,Terc   

给定数据帧
d

d$Genes_new <- sapply(strsplit(as.character(d$Genes),split=','),function(s) paste(s[!grepl('^Gm',s)],collapse=','))

#  level logp chr start end  CNA                             Genes     Genes_new
#1     3  1.4   3   100 110 gain Gm5852,Gm5773,Tdpoz4,Tdpoz3,Gm911 Tdpoz4,Tdpoz3
#2     4 18.1   3   962 966 gain                 Fcgr1,Terc,Gm5703    Fcgr1,Terc

d$Genes\u new这使用单个
gsub
删除不需要的部分:

Genes <- c("Gm5852,Gm5773,Tdpoz4,Tdpoz3,Gm911", "Fcgr1,Terc,Gm5703") # test data
gsub(",?Gm[^,]*,?", "", Genes)
下面是正则表达式的可视化:

,?Gm[^,]*,?