【发布时间】:2020-06-04 20:06:21
【问题描述】:
我有一个像go_id 这样的向量和一个像data 这样的data.frame。
go_id <- c("[GO:0000086]", "[GO:0000209]", "[GO:0000278]")
protein_id <- c("Q96IF1","P26371","Q8NHG8","P60372","O75526","Q01130")
bio_process <- c("[GO:0000086]; [GO:0000122]; [GO:0000932]", "[GO:0005829]; [GO:0008544]","[GO:0000209]; [GO:0005737]; [GO:0005765]","NA","[GO:0000398]; [GO:0003729]","[GO:0000278]; [GO:0000381]; [GO:0000398]; [GO:0003714]")
data <- as.data.frame(cbind(protein_id,bio_process))
如何保留data 的行,其中bio_process 单元格至少包含go_ids 元素之一?我注意到 GO 代码不能在同一个bio_process 单元格中重复。
更准确地说,我只想接收 data.frame 的第一行、第三行和第六行。
我已经尝试了for loop 使用 'grepl' 函数,如下所示:
go_id <- gsub("GO:","", go_id, fixed = TRUE)
for (i in 1:6) {
new_data <- data[grepl("\\[GO:go_id[i]\\]",data$Gene.ontology..biological.process.)]
}
我知道这是行不通的,因为我无法将变量值放入正则表达式中。
对此有什么想法吗? 谢谢
【问题讨论】: