我有一个包含多个字符串的向量
strings <- c("CD4","CD8A")
我想输出一个OR语句,以便像这样传递给grep
"CD4-|-CD4-|-CD4$|CD8A-|-CD8A-|-CD8A$"
等等,对于向量中的每个元素。
基本上,我试图在一个包含三个破折号的字符串中找到一个确切的单词(我不希望grep(CD4, ..)返回带有CD40的字符串)。这就是我想要做的,但我愿意接受其他建议
我的data.frame的一部分如下所示:
Genes <- as.data.frame(c("CD4-MyD88-IL27RA", "IL2RG-CD4-GHR","MyD88-CD8B-EPOR", "CD8A-IL3RA-CSF3R", "ICOS-CD40-LMP1"))
colnames(Genes) <- "Genes"发布于 2018-05-14 17:08:06
这是一个单线.
Genes$Genes[grep(paste0("\\b",strings,"\\b",collapse="|"),Genes$Genes)]
[1] "CD4-MyD88-IL27RA" "IL2RG-CD4-GHR" "CD8A-IL3RA-CSF3R"它使用单词边界标记\\b来确保它匹配完整的子字符串(因为-不作为单词的一部分计算)。
发布于 2018-05-14 17:09:37
我不知道我是否理解。如果我得到了它,下面的命令将返回您想要的
stringr::str_split(Genes$Genes, pattern = '-') %>%
purrr::map(
function(data) {
data[stringr::str_which(data, pattern = '^CD')]
}
) %>% unlisthttps://stackoverflow.com/questions/50335079
复制相似问题