私はここに質問を投稿しました:2番目のファイルの範囲に入る1つのファイルの数に基づいて2つのファイルをマージすることについてのRの一致した範囲のマージ。これまでのところ、これを実現するためにコードをつなぎ合わせることに成功していません。私が抱えている問題は、使用しているコードがファイルを1行ずつ比較していることです。これは問題です。1。)1つのファイルが他のファイルよりもはるかに長い、2。)同じ行の範囲だけでなく、長いファイルのすべての範囲ペアをスキャンするために、短いファイルの行が必要です。 。
私は元の質問に投稿された関数を使用しており、最初のファイルのすべての行を2番目のファイルの各行と比較するより一般的なループに適用する方法があるはずですが、私はしていません。 tはまだそれを理解しました。何か提案があれば、よろしくお願いします。
****編集済み。
データの性質は次のとおりです。ほとんどの範囲は一意ですが、各範囲は必ずしも一意ではありません。それらも同じサイズではなく、完全に他の中に収まるものもあります。findInterval
したがって、「降順ではない」順序に分類するために範囲を並べ替えることができないため、エラーが発生します。
各データフレームの最初の6行は次のとおりです。
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))
したがって、ご覧のとおり、5行目の範囲は4行目の範囲内にあり、最初のファイルの2つのSNPは4行目の範囲内にありますが、2行目の範囲内にあるのは1つだけです。
SNPを含む最初のファイルには、約400行しかありません。ただし、範囲を含む2番目のファイルには約20Kがあります。出力として生成したいのは、最初のファイル(SNP)の行と、2番目のファイルのBP範囲に含まれるBPを含むデータフレームです。SNPが2つの範囲に分類される場合、2回表示されます。