如何使用R在数据帧的单元格中发现短语/单词

如何使用R在数据帧的单元格中发现短语/单词,r,bioinformatics,R,Bioinformatics,有一个像'df'这样的data.frame,我想在'bio_process'列的每个单元格中发现这个确切的短语“kerationization[GO:0031424]”。之后,我想创建一个新的向量,其中包含匹配发生的观测值的ID ID <- c("Q9BYP8", "Q17RH7", "Q6L8G8", "Q9BYR4") bio_process <- c("keratinization [GO:0031424]", "NA", "keratinization [GO:0031424

有一个像'df'这样的data.frame,我想在'bio_process'列的每个单元格中发现这个确切的短语“kerationization[GO:0031424]”。之后,我想创建一个新的向量,其中包含匹配发生的观测值的ID

ID <- c("Q9BYP8", "Q17RH7", "Q6L8G8", "Q9BYR4")
bio_process <- c("keratinization [GO:0031424]", "NA", "keratinization [GO:0031424]", "aging [GO:0007568]; hair cycle [GO:0042633]; keratinization [GO:0031424]")
df <- as.data.frame(cbind(ID,bio_process))
因此,我希望“ids”向量的内容如下所示

"Q9BYP8" "Q6L8G8" "Q9BYR4"
然而,
%in%
对细胞不起作用,因为“角质化[GO:0031424]”不是唯一的内容


有什么想法吗?谢谢

您可以在Base-R中使用
grepl

df$ID[grepl("keratinization \\[GO:0031424\\]",df$bio_process)]

[1] Q9BYP8 Q6L8G8 Q9BYR4

注意:我必须用
\\
转义
[
字符,因为方括号在正则表达式中有特殊含义。

不需要转义结束方括号。
df$ID[grepl("keratinization \\[GO:0031424\\]",df$bio_process)]

[1] Q9BYP8 Q6L8G8 Q9BYR4