关于R语言循环体内匹配数据遇到的问题
使用dbplyr::filter遇到了问题
在循环体内进行数据匹配是最常见的,具体也就是:数据赋值给变量dat
从表中提取出Enhancer_ID为10:13200624-13201003的行,dbplyr处理数据使用的filter函数在进行数据匹配时,非常好用,那dbplyr::filter在此处的用法是:
dat %>% dbplyr::filter(Enhancer_ID=="10:13200624-13201003")
能够得到想获取的结果:
但是当在循环体内使用filter时,却会遇到问题,例如:
使用
eh_ID_mut <- eh_mut %>% filter(Enhancer_ID==eh_ID[ii])# %>% select("Hugo_Symbol","Chromosome","Start_position","End_position","Enhancer_ID")
通过循环ii来提取文件时,会出现窜行现象,如ii=63
和ii=64
得到的eh_ID_mut
是一样的,而ii=65得到的eh_ID_mut$Enhancer_ID
却是eh_ID[64]
的,这在循环体内进行其他处理时会出错。
所以给出以下两点解决方案:
1.使用which()
进行匹配,如此处可以用:
eh_ID_mut <- eh_mut[which(eh_mut$Enhancer_ID==eh_ID[ii]),]
2.如果仍然想在循环内使用filter(),需要将eh_ID[ii]赋值给变量,在filter里调用该变量,如:
ID <- eh_ID[ii]
eh_ID_mut <- eh_mut %>% filter(Enhancer_ID==ID)# %>% select("Hugo_Symbol","Chromosome","Start_position","End_position","Enhancer_ID")
出现这个问题的原因,还不太清楚,若是有大佬知道,拜托在评论区解答一下!!!