R语言中如何使用gsub函数从向量中提取基因名称与ID编号
R语言用gsub提取基因名与ID的实现方法
你给出的列名格式统一为「基因名 (ID编号)」,可以直接通过两次gsub调用分别提取两个字段:
提取基因名称
匹配末尾的 (ID)部分直接删除即可:
gene_names <- gsub("\\s*\\(.*\\)$", "", colnames(cn))
提取ID编号
匹配开头到左括号的内容、以及末尾的右括号,删除后剩下的就是ID:
gene_ids <- gsub("^.*\\(|\\)$", "", colnames(cn))
如果需要数值型ID,可以额外加一步转换:
gene_ids <- as.integer(gene_ids)
效果测试
以第一个示例值为例:
test_str <- "A1BG (1)" gsub("\\s*\\(.*\\)$", "", test_str) # 输出: "A1BG" gsub("^.*\\(|\\)$", "", test_str) # 输出: "1"
正则规则说明
\\s*:匹配0个或多个空格\\(、\\):匹配左右括号(括号在正则里是特殊字符,需要加反斜杠转义)^:匹配字符串开头,$匹配字符串末尾|:正则或逻辑,同时匹配两种规则的内容
内容的提问来源于stack exchange,提问作者Ishan Mehta
相关产品推荐
相关产品推荐

