我有两个具有不同维度的R数据帧。然而,但数据帧有id
列通过循环另一个数据帧来映射数据帧的元素
DF1:
nrow(df1)=22308
c1 c2 c3 pattern1.match
ENSMUSG00000000001_at 10.175115 10.175423 10.109524 0
ENSMUSG00000000003_at 2.133651 2.144733 2.106649 0
ENSMUSG00000000028_at 5.713781 5.714827 5.701983 0
DF2:
Genes Pattern.Count
ENSMUSG00000000276 ENSMUSG00000000276_at 1
ENSMUSG00000000876 ENSMUSG00000000876_at 1
ENSMUSG00000001065 ENSMUSG00000001065_at 1
ENSMUSG00000001098 ENSMUSG00000001098_at 1
nrow(df2)=425
我想遍历df2
,发现有pattern.count=1
所有基因和请在df1$pattern1.match
栏中查看。
基本上我想用df2$Genes
和df2$Pattern.Count
覆盖字段GENES
和pattern1.match
。 df2$Pattern.Count
中的所有元素都等于1。
我写了这个函数,但是当循环遍历所有这些行时,R冻结。
idcol <- ncol(df1)
return.frame.matches <- function(df1, df2, idcol) {
for (i in 1:nrow(df1)) {
for (j in 1:nrow(df2))
if(df1[i, 1] == df2[j, 1]) {
df1[i, idcol] = 1
break
}
}
return (df1)
}
是否有这样做的另一种方式几乎没有查杀电脑?
所以我df1-主要数据框,我想检查int df1 $ pattern.match列哪些基因可以在df2中找到...基本上df2中的基因包含在df1中,我想检查通过将df1 $ pattern.match的元素标记为1,当在df2 – agatha
中找到基因时,该模式。计数列只有元素= 1,因为它已经从另一个数据集中提取出来了 – agatha
好的,现在有一个更好的解决方案可以解决问题。 – James