我需要使用regexp重新塑造我的数据框,特别是这种行
X21_GS04.A.mzdata
必须成为:
GS04.A
我试过
pluto <- sub('^X[0-90_]+','', my.data.frame$File.Name, perl=TRUE)
它有效;比我试过
pluto <- sub('.mzdata$','', my.data.frame$File.Name, perl=TRUE)
它也有效。
问题是我不知道如何将两个代码合二为一,我尝试了一个这样的脚本
pluto <- sub('^X[0-90_]+ | .mzdata$','', my.data.frame$File.Name, perl=TRUE)
但没有任何意外。 有人能跟我说错吗??
最佳的Riccardo
答案 0 :(得分:9)
你所遵循的正则表达式是:
^X\d+_(.*)\.mzdata$
这将匹配您的整个表达式并捕获您要在组中保留的部分。您现在可以用\1
(对捕获组的引用)替换它。
在R中,这将是:
result <- sub('^X\\d+_(.*)\\.mzdata$', '\\1', my.data.frame$File.Name, perl=TRUE)
答案 1 :(得分:2)
删除正则表达式中的空格。还要转义.
char:\.
,即:
^X[0-9]+_|\.mzdata$