0
我有兩個數據框,一個是參與疾病x的已知基因列表,另一個是陣列數據。 甲只是兩個dataframes的例子有:R中的循環匹配功能
knownGene <- as.dataframe(geneID = c(gene1, gene2, gene3, gene5, gene5), chr = c(16,3,4,1,10))
arrayData <- as.dataframe(sampleID = c(xyz1,xyz1,xyz1,xyz2,xyz2,xyz2,xyz2), geneID = c(gene1, gene3, gene4, gene2, gene1, gene3, gene4, gene5)
陣列數據可以具有列出多次(例如多個樣品可具有在相同的基因變異)的基因。因此,做匹配
Matched<-arrayData[na.omit(match(knownGene$geneID, arrayData$geneID)),]
只會產生第一個匹配,例如每個基因最多隻能抽取一個樣本。 如果我在一個循環中使用grep,我會得到很多基因,這些基因不在我的已知基因中,這是由於grep拉出包含x個字符的項。 我的循環看起來像這樣
for (i in 1:length(knownGene$geneID)){
x<-arrayData[grep(knownGene[i,2],arrayData$geneID),]
df<-rbind(df,x)
}
有要麼使用匹配這樣的一個循環(我所有的努力迄今未能),任何方式。或者能夠在循環中精確地確定術語,我知道如果提供字符串,您可以使用精確的術語。
我的第一個想法是,只是以另一種方式進行比賽可能會有效,但你想要做的事情對我來說並不是很清楚。你能提供一個小例子數據集(可能使用dput)和期望的輸出嗎? – Aaron