gpt4 book ai didi

r - 如何使 grepl 功能具体化?

转载 作者:行者123 更新时间:2023-12-04 09:24:46 26 4
gpt4 key购买 nike

我的数据框如下所示。我需要根据“geneID”列的名称一一提取特定行的数据。我使用 grepl 函数。

#Data frame:geneDf  
geneID=c("EGFR","Her2","PTENPP","PTEN")
patient1=c(12,23,56,23)
patient2=c(23,34,11,6)
patient3=c(56,44,32,45)
patient4=c(23,64,45,23)
geneDf=data.frame(patient1,patient2,patient3,patient4,geneID)

geneDf
patient1 patient2 patient3 patient4 geneID
1 12 23 56 23 EGFR
2 23 34 44 64 Her2
3 56 11 32 45 PTENPP
4 23 6 45 23 PTEN

前三行运行良好。

targetGene<-subset(geneDf,grepl(geneDf$geneID[1],geneDf$geneID))
targetGene
patient1 patient2 patient3 patient4 geneID
1 12 23 56 23 EGFR

当我提取第 4 行的数据时,我得到了这个:

targetGene<-subset(geneDf,grepl(geneDf$geneID[4],geneDf$geneID))
targetGene
patient1 patient2 patient3 patient4 geneID
3 56 11 32 45 PTENPP
4 23 6 45 23 PTEN

似乎其他数据,在这种情况下,“geneID”列的第3行,包括第4行的内容也被拾取。我的命令有什么问题?如何让它每次只取某一行的数据?

最佳答案

您可能需要 字边界\\b 或使用

subset(geneDf, grepl(paste0('^', geneID[4], '$'), geneID))
# patient1 patient2 patient3 patient4 geneID
#4 23 6 45 23 PTEN

或者

subset(geneDf, grepl(paste0('\\b', geneID[4], '\\b'), geneID))
# patient1 patient2 patient3 patient4 geneID
#4 23 6 45 23 PTEN

关于r - 如何使 grepl 功能具体化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30611307/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com