Scal według zakresu w R - Stosowanie pętli

Wysłałem tutaj pytanie:Dopasowany zakres scalania w R o łączeniu dwóch plików na podstawie liczby w jednym pliku mieszczącej się w zakresie w drugim pliku. Do tej pory nie udało mi się zebrać kodu, aby to osiągnąć. Problem, który mam, polega na tym, że kod, którego używam, porównuje pliki wiersz po wierszu. Jest to problem, ponieważ 1.) Jeden plik jest znacznie dłuższy niż drugi plik i 2.) Potrzebuję, aby linie w krótszym pliku były skanowane przez każdą parę zakresów w dłuższym pliku - nie tylko zakres w tym samym wierszu .

Pracowałem z funkcjami opublikowanymi w pierwotnym pytaniu i wydaje mi się, że powinien istnieć sposób na zastosowanie go do bardziej ogólnej pętli, która porównuje każdą linię w pierwszym pliku z każdą linią w drugim pliku, ale nie ma mnie jeszcze się tego nie domyśliłem. Jeśli ktoś ma jakieś sugestie, byłbym wdzięczny.

**** EDYCJA.

Charakter danych jest następujący: każdy zakres niekoniecznie jest unikalny, chociaż większość z nich jest. Nie są one również tej samej wielkości, a niektóre całkowicie mieszczą się w innych.findInterval dlatego powoduje błąd, ponieważ zakresy nie mogą być sortowane, aby znaleźć się w kolejności „niegodnej”.

Oto pierwsze 6 wierszy każdej ramki danych:

file1test <- data.frame(SNP=c("rs2343", "rs211", "rs754", "rs854", "rs343", "rs626"), BP=c(860269, 369640, 861822, 367934, 706940, 717244))


file2 <- data.frame(Gene=c("E613", "E92", "E49", "E3543", "E11", "E233"), BP_start=c(367640, 621059, 721320, 860260, 861322, 879584), BP_end = c(368634, 622053, 722513, 879955, 879533, 894689))

Tak więc, jak widać, zakres na 5 linii leży w zakresie w czwartej linii, a dwa SNP z pierwszego pliku mieszczą się w zakresie w czwartej linii, ale tylko jeden mieści się w zakresie w drugiej linii.

Pierwszy plik zawierający SNP ma tylko ~ 400 linii. Jednak drugi plik, zawierający zakresy, ma około 20K. Jako wynik chciałbym stworzyć ramkę danych zawierającą linie z pierwszego pliku (SNP) z BP, które mieszczą się w zakresie BP w drugim pliku. Jeśli SNP dzieli się na dwa zakresy, to pojawiłby się dwa razy itd.

questionAnswers(2)

yourAnswerToTheQuestion