如何解决如何使用 grepl 过滤掉字符串中的匹配项?
我有一个基因名称列表,我试图使用 grepl 从更大的数据集中过滤掉这些基因名称。例如:
gene_list <- c(geneA,geneB,geneC)
data <- c(XXXgene1,XXXgene2,XXXgeneF,XXXgeneA,XXXgeneB)
select_grepl <- data %>% filter(grepl(c(gene_list),data)==T)
我已经尝试过上面的 grepl 代码,但由于模式 > 1,他们只使用第一个基因 A 在字符串中进行搜索。如果我将 c(gene_list) 更改为像“geneA”这样的单一模式,则代码有效。还有其他解决方案吗?
解决方法
您需要用 grepl
分隔 |
中的关键字。您可以使用如下所示的 paste(...,collapse = "|")
轻松完成此操作。请注意,您需要将作为示例提供的 data
向量转换为 data.frame
以应用 filter()
。以下代码有效。
代码:
gene_list <- c("geneA","geneB","geneC")
data <- c("XXXgene1","XXXgene2","XXXgeneF","XXXgeneA","XXXgeneB")
gene_vec <- paste(gene_list,collapse = "|")
select_grepl <- as.data.frame(data) %>%
filter(.,grepl(gene_vec,data) == TRUE)
输出:
> select_grepl
data
1 XXXgeneA
2 XXXgeneB
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。