在R

时间:2019-01-07 16:36:03

标签: r

我有两个表,对于表1中的每一行,我需要计算该值是否与表2中值的范围相匹配(表2的第1列显示星形范围,而第2列表示该范围的末尾)

我在R中尝试了以下脚本,但是这花费了很长时间并且没有提供正确的答案(count_exon和count_intergenic = 0)。

这是我的数据和脚本的示例:

    Table 1:
    POS
    119002
    119672
    119941
    120024
    120107
    121093
    1205376
    1205623
    1205837

    Table 2:
    START;END
    634386;635717
    348842;348940
    349108;349199
    349382;350489
    1203603;1204923
    1205095;1205132
    1205273;1205383
    1205535;1205624
    1205740;1205838

    count_exon=0
    count_intergenic = 0
    i = 1
    j = 1

    while (i <= nrow(lp)) {
        if (j == nrow(exon) && lp[i,2] >= exon[j,1] && lp[i,2] <= exon[j,2]) {
            j = 1 #case of exon positions in last line
            i = i+1
            count_exon = count_exon + 1
        } else if (j == nrow(exon) && lp[i,2] <= exon[j,1] && lp[i,2] >= exon[j,2]) {
            j = 1 #case of intergenic or intron positions
            count_intergenic = count_intergenic + 1
        } else if (lp[i,2] >= exon[j,1] && lp[i,2] <= exon[j,2]) {
            j = 1 #case of exon positions
            i = i+1
            count_exon = count_exon + 1
        } else {
           j= j+1
        }
      }

我希望得到这样的结果:

count_exon = 3(将与表1中的值与表2中的范围相匹配的值)

count_intergenic = 6(表1中的值与表2的范围不匹配)

感谢您的帮助!

0 个答案:

没有答案