Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 查找列名并将其替换为查找中的匹配项_R - Fatal编程技术网

R 查找列名并将其替换为查找中的匹配项

R 查找列名并将其替换为查找中的匹配项,r,R,我正在尝试重命名数据框中名为totsMerge的列 我需要在现有列名中找到任何介于TCO、两位数字和另一位数字之间的字符串,例如TC017或TC034 然后,我想用匹配项替换现有列名(此匹配项后面的名称中有字符)。 我试着用1美元来比赛,但是它用这个来代替比赛 如何用该列名中的匹配项替换该列名 names(totsMerge) <- gsub("(_TC0.+?_)",'$1',names(totsMerge)) 到 试一试 或 数据 str1我在上面添加了一个示例。非常感谢much

我正在尝试重命名数据框中名为totsMerge的列

我需要在现有列名中找到任何介于TCO、两位数字和另一位数字之间的字符串,例如TC017或TC034 然后,我想用匹配项替换现有列名(此匹配项后面的名称中有字符)。 我试着用1美元来比赛,但是它用这个来代替比赛 如何用该列名中的匹配项替换该列名

  names(totsMerge) <- gsub("(_TC0.+?_)",'$1',names(totsMerge))

试一试

数据
str1我在上面添加了一个示例。非常感谢much@user3632206没问题。很高兴帮助你我想知道为什么OPs代码不起作用。例如,
str\u extract(str1,“(\u TC0.+?)”)
几乎会给出所需的结果,为什么它没有给出与
sub相同的输出(“(\u TC0.+?”,“\\1',str1)
?@davidernburg我认为一个原因是它可能与字符串的开头不匹配,因为
\u TCO.
不是起始字符。第二个
+
也可以包括
\uu
,其中有多个
\u
。虽然它在两端都有
的情况下工作(“.*”(“\\TC0[^\u]*..*”,“\\ 1',str1)
。@davidernburg它正确匹配提取,但替换失败。使用
str_replace
str_replace(str1,“([u TC0.+?)”,“\\1”)
另一个不太复杂的示例是
v1
 SLX.9397._HGD_TC070III_E_FLD0252.Read1_SND_QHGD_Apos.fq.gz 
 TC070III
 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'