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
anyPosStart
とPosEnd
of の間にあるかどうかを確認しようとしていますdf2
。これは の 1 行以上の場合に当てはまりますdf2
。df1$Pos
出力では、新しい列として追加しようとしていますdf2$CoPos
。条件が true になるたびに。出力は次のようになります。
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])]
}
}
ループせずにこれを行う方法があれば、誰か教えてください。また、ここで何が間違っていますか?何ヶ月もグラップリングした後でも、ループの概念をまだ理解していないと思います。
事前にたくさんありがとう。