我有一个包含许多ensembl基因注释的数据框,DF看起来像这样:
geneID
1 ENSG00000000005.5
2 ENSG00000001561.6
3 ENSG00000002726.18
4 ENSG00000005302.16
5 ENSG00000005379.14
6 ENSG00000006116.3
所以我想删除那个"。"以及每个ID末尾的数字。我总共有11224行。
我尝试使用gsub命令gsub(".","",colnames(dataframe))
,但这没有帮助。
有什么建议吗? 提前谢谢。
答案 0 :(得分:1)
如果我们最后需要.
,请捕获字符,直到.
(因为.
是一个元字符,意味着任何字符,转义它(\\
))后跟一个或多个数字(\\d+
),直到字符串结尾,并替换为捕获组的反向引用(\\1
)
df1$geneID <- sub("^(.*\\.)\\d+$", "\\1", df1$geneID)
如果打算在此之后删除带有数字的.
,请匹配点后跟一个或多个数字,然后替换为空白(""
)
df1$geneID <- sub("\\.\\d+", "", df1$geneID)
df1$geneID
#[1] "ENSG00000000005" "ENSG00000001561" "ENSG00000002726" "ENSG00000005302"
#[5] "ENSG00000005379" "ENSG00000006116"
答案 1 :(得分:0)
您可以使用以下代码在'。'
之后删除字母数字gsub("\\..*", "", df$geneID)