比較

2014-03-30 79 views
0

當我有這些數據(DAT2)比較

CHOM POS REF  ALT  ALT1 ALT2 ... 
1 121 A  AA   AT  0 
2 254 GCGC GCGCG  AGCG  0 
3 214 C  T   0   0 

我需要來標記每一行或ALT,ALT1和ALT2每一個細胞。與任何這些變異SNP的,刪除,插入。

這將解釋如何SNP和刪除和插入區分..

REF ALT1 ALT2 
A  T  NA = SNP 
AT T   = deletion 
CG CGG  = insertion 
ATT AT   = deletion 

也許輸出會是這樣

CHOM POS REF  ALT    ALT1   ALT2 ... 
    1 121 A  deletion   insertion  0 
    2 254 GCGC  insertion   SNP   0 
+0

我意識到英語有可能不適合海報的主要語言,但我想大多數讀者需要除非SO基因/ R人可以解讀而不需要額外的說明,否則會有更多的背景。 – hrbrmstr

+0

這並不難理解。這是一個相當普遍的任務,所以我很難相信bioconductor中沒有包含這個功能的軟件包。沒有理由重新發明輪子。 – rawr

+0

hopfully現在你可以理解.. – user3478697

回答

2

一個簡單的方法是隻用nchar看在每個字符串的長度。該假設數據已經預先消毒

例如:

ref <- c("A", "AT", "CG", "ATT") 
alt1 <- c("T", "T", "CGG", "AT") 

ref.length <- nchar(ref) 
alt1.length <- nchar(alt1) 

variations <- ifelse(ref.length==alt1.length, "SNP", 
        ifelse(ref.length>alt1.length, "deletion", 
          "insertion")) 

這給

> cbind(ref, alt1, variations) 
    ref alt1 variations 
A "A" "T" "SNP"  
AT "AT" "T" "deletion" 
CG "CG" "CGG" "insertion" 
ATT "ATT" "AT" "deletion" 
+0

猜猜我需要刪除我的。 –

+0

爲什麼'sapply(ref,nchar)'? - 'nchar'是矢量化的,所以'nchar(ref)'可以正常工作。 – thelatemail

+0

@thelatemail:你說得對,回答更新 – nico