У меня есть три фрейма данных, и я хочу найти комбинации некоторых строк из этих трех dfs, которые соответствуют критериям:
df_1[i, "start"] == df_2[j, "start"] &
df_1[i, "end"] == df_3[k, "end"] &
df_2[j, "end"] < df_3[k, "start"]
Я использовал nested for loop, чтобы выполнить эту работу, но получение результатов занимает очень много времени. Мне интересно, есть ли лучший способ выбрать строки из каждого из фреймов данных?
df_pos.D.DA.A.subDA<-df_pos.D.DA.A[df_pos.D.DA.A$anchor=="DA",]
df_pos.D.DA.A.subD<-df_pos.D.DA.A[df_pos.D.DA.A$anchor=="D",]
df_pos.D.DA.A.subA<-df_pos.D.DA.A[df_pos.D.DA.A$anchor=="A",]
junction.pos.DA<-NULL
junction.pos.D<-NULL
junction.pos.A<-NULL
for (i in 1:nrow(df_pos.D.DA.A.subDA)){
for (j in 1:nrow(df_pos.D.DA.A.subD)){
for (k in 1:nrow(df_pos.D.DA.A.subA)){
DAs<-df_pos.D.DA.A.subDA[i,"start"]
DAe<-df_pos.D.DA.A.subDA[i,"end"]
Ds<-df_pos.D.DA.A.subD[j,"start"]
De<-df_pos.D.DA.A.subD[j,"end"]
As<-df_pos.D.DA.A.subA[k,"start"]
Ae<-df_pos.D.DA.A.subA[k,"end"]
if((DAs==Ds)&(DAe==Ae)&(De<As)) {
junction.pos.DA[i]<-df_pos.D.DA.A.subDA[i,"name"];
junction.pos.D[j]<-df_pos.D.DA.A.subD[j,"name"];
junction.pos.A[k]<-df_pos.D.DA.A.subA[k,"name"];
print(c(i,j,k))
}
}
}
}