R编程:使用字母数字序列中的名称循环遍历列,并提取与其他列匹配的相应值

时间:2015-06-23 00:42:08

标签: r

我有一张桌子(mydf),如下所示。我想在R中使用这个for循环(我的代码),它只适用于一个列(在本例中为ALT3列)循环遍历包含ALT1到ALTn的所有列,并将输出存储在从final1到finaln的单独变量中。 这里的目的是循环ALT1到ALTn以匹配核苷酸列(A,C,G,T,N)并获得相应的值,如下面的结果所示。谢谢你的帮助!

  

mycode的

    final3<-{} 
      i<-1  
    for(i in 1:nrow(result)){   if (!is.na(result$ALT3[i])){
         final3[i] <- paste(result$ALT3[i],
                            "(",result[,(as.character(result$ALT3[i]))][i][!is.na(result[,(as.character(result$ALT3[i]))][i])],")",sep="")
     }   else{
         final3[i]<-NA   } }
  

是myDF

    chr     start       end  A  C  G  T  N  =  - REF ALT ALT1 ALT2 ALT3 ALTn          
1 chr10 102022031 102022031 NA 34 NA NA NA NA NA   C   G    G NA NA NA       
2 chr10 102220574 102220574  2 22  2  3 NA NA NA   C AGT    A    G    T NA       
3 chr10 115322228 115322228 NA 25 NA NA NA NA NA   C   A    A NA NA NA       
4 chr10 122222925 122222925 30 NA NA NA NA NA NA   A   C    C NA NA NA 
5 chr10 121111042 121111042 NA 48 NA NA NA NA NA   C   T    T NA NA NA 
6 chr10 124444484 124444484 NA 60 NA NA NA NA NA   C   T    T NA NA NA 
  

结果

"chr10:102022031:102022031-C(34),G()"            "chr10:102220574:102220574-C(22),A(2),G(2),T(3)" "chr10:115322228:115322228-C(25),A()"           
      [4] "chr10:122222925:122222925-A(30),C()"            "chr10:121111042:121111042-C(48),T()"            "chr10:124444484:124444484-C(60),T()"

0 个答案:

没有答案