df1 <- data.frame(Chr=1, Pos= c(100,200,300,400),stringsAsFactors=F)
df2 <- data.frame(Chr=1, PosStart= c(25,25,150,175,225,275,375),PosEnd= c(150,75,275,300,400,500,750),stringsAsFactors=F)
我正在尝试比较中的Pos
值df1
以查看是否介于任何PosStart
和PosEnd
之间df2
。对于超过 1 行的df2
. 在输出中,我试图将 附加df1$Pos
为新列df2$CoPos
;每次条件为真。输出应该是这样的:
Chr PosStart PosEnd CoPos
1 25 150 100
1 150 275 200
1 175 300 200
1 225 400 300
1 275 500 300
1 375 750 400
我做了类似的事情:
for(i in 1:length(df1$Pos)){
for(j in 1:length(df2$PosStart){
df2$CoPos[j]<- df1$Pos[which(df2$PosStart[j] < df1$Pos[i] < df2$PosEnd[j])]
}
}
有人可以告诉我是否有办法在不循环的情况下做到这一点。还有我在这里做错了什么?经过几个月的挣扎,我认为我仍然不理解循环的概念。
提前感谢一堆。