如何从R中的数据帧中删除具有特定图案的字符
我正在尝试从我的data.frame的最后一列中删除以模式“Gm”开头的所有字符 我的data.frame看起来像这样如何从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
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[^,]*,?