我试图在名为totsMerge的数据框中重命名我的列
我需要找到现有列名称中的任何字符串,该字符串位于_TCO之间,然后是两位数字,然后是另一个_例如 TC017 或 TC034 然后我想用匹配替换现有列名(匹配后名称中有字符)。 我尝试使用$ 1进行比赛但是用字面意思取代了比赛 如何使用该列名称匹配来替换列名?
names(totsMerge) <- gsub("(_TC0.+?_)",'$1',names(totsMerge))
例如,我想更改列名
SLX.9397._HGD_TC070III_E_FLD0252.Read1_SND_QHGD_Apos.fq.gz
到
TC070III
答案 0 :(得分:1)
尝试
sub('.*?_(TC0\\d{2}[^_]*).*', '\\1', str1)
#[1] "TC070III"
或者
library(stringr)
str_extract(str1, 'TC0\\d{2}[^_]*')
#[1] "TC070III"
str1 <- 'SLX.9397._HGD_TC070III_E_FLD0252.Read1_SND_QHGD_Apos.fq.gz'