如何通过R中的Loop来计算查询ID的命中数

时间:2015-08-31 08:38:32

标签: r loops for-loop count

我有表格格式的BLAST结果数据。我对第一列(query_ID)和第3列(基因)感兴趣。每个查询ID都有多个基因命中。我想根据每个查询ID计算基因。例如,“CSAI_contig04661_6”有5个基因命中。我希望输出格式如下

CSAI_contig04661_6              GCST(3)
                                Y1099
                                SMC6A

 query_ID              subject_id  gene   organism  identity alignment_length mismatches gap_opens q.start q.end s.start s.end  evalue bit_score
1  CSAI_contig04661_6  sp|O65396  GCST    ARATH    86.03              408         56         1      72   478       1   408 0.0e+00     738.0
2  CSAI_contig04661_6  sp|Q681Y3 Y1099    ARATH    22.55              337        244        10     140   474     103   424 8.0e-09      56.6
3  CSAI_contig04661_6  sp|Q9FLR5 SMC6A    ARATH    24.27              103         66         3     156   249     342   441 4.6e+00      28.9
4  CSAI_contig04661_6  sp|Q9LQI7  GCST    ARATH    27.03               74         47         2     230   300      31   100 8.1e+00      27.7
5  CSAI_contig04661_6  sp|P56795  GCST    ARATH    28.95               76         49         4     436   509      15    87 8.4e+00      27.3
6  CSAI_isotig00001_4  sp|Q8VZE4 PP299    ARATH    29.63              108         55         5     213   307      10   109 1.6e+00      30.4
7  CSAI_isotig00001_4  sp|Q9M342 WAKLP    ARATH    28.28               99         64         3     261   355     320   415 1.9e+00      30.4
8  CSAI_isotig00001_4  sp|Q9ZUC1  QORL    ARATH    29.58               71         44         3     365   435     152   216 2.7e+00      29.6
9  CSAI_isotig00001_4  sp|Q5PNU3 AMSH3    ARATH    32.56               43         29         0     411   453     376   418 3.7e+00      29.3
10 CSAI_isotig00001_4  sp|F4K495 MOB2A    ARATH    26.09               46         28         1     417   456      39    84 5.5e+00      28.1
11 CSAI_isotig00001_4  sp|Q9CA60 C98A9    ARATH    36.59               41         24         1     271   309      91   131 9.6e+00      27.7
12 CSAI_isotig00004_3  sp|Q93V43  GCST    ARATH    27.84               97         55         2     135   220      92   184 2.0e-03      39.3
13 CSAI_isotig00004_3  sp|O64628 TXND9    ARATH    32.86               70         39         2     149   218      10    71 7.4e-01      30.4
14 CSAI_isotig00004_3  sp|O23212 U2A2A    ARATH    50.00               24         12         0     186   209      46    69 2.2e+00      29.6
15 CSAI_isotig00004_3  sp|Q9LE81   IRE    ARATH    26.67               75         41         2      15    75      44   118 5.6e+00      28.5
16 CSAI_isotig00004_3  sp|Q9LFN5 GLR25    ARATH    33.93               56         34         1     280   332     270   325 7.4e+00      28.1

我试着用循环计算一个基因出现在查询ID上的时间。但它不起作用。我是编程的新手如果我犯了一些错误,我希望你能原谅我。 我需要你的建议来纠正它。

testfile<-s_t38kbat
head(testfile)
col1<- trialfile$query_id
col2<- trialfile$gene
counting_columns(col1,col2)
length(col1)==length(col2)
length(col1) > 0
length(col2) > 0
col_element = col1[0]
start=0
end=0
large_dick = {}
for (i in (0:length(col1)))  element = col1[i] {
  if (element != col1_element) {
    start=end
    end=i
  }
  large_dick[col1_element] = count_unique_elements(col2, range(start:end)
  col1_element=element
  if (end < length(col1))
  large_dick[col1_element] = count_unique_elements(col2, range(end:length(col1))
}
return large_dick

count_unique_elements(col2, start, end)
disk{}
for (i in range(start,end)) element= col2[i] {
  if (disk has_key(element)) {
    val= disk.get(element)
    val=val+1
    disk[element] = val
  }
  else 
    disk[element] = 1
}
return(disk)  

print(counting_columns(cat1,cat2))
} 

0 个答案:

没有答案