我有一個令人費解的問題串,我希望我可以很容易解釋它...不斷增加給定不同的,如果else語句[R]
,我有以下數據:
CHROM POS REF SNP INDEL
5 290 A --|T|--|-- 0
5 890 A A|T|--|G 0
7 672 A A|--|C|-- +C,+CC
9 459 G A|T|--|G -C
我想創建一個ALT變量,所以我最終可以通過VCFtools來運行它。但是,我並不完全知道如何通過不斷添加變量來創建變量,當且僅當某個語句被滿足時。
例如:
第一列很容易,ALT只是T;但是我只想將T粘貼到ALT列中,而不添加「|」要麼 」 - 」。第二個稍有不同,我不想將A添加到ALT變量,只是因爲它在SNP條目下出現,但添加了T和G,並用列分隔。
所以,實質上,我想要添加每個字母到ALT變量只有當它不等於REF變量,它不等於「 - 」。
我已經先行一步,分裂SNP列了如下:
m$A <- sapply(strsplit(as.character(mito$SNP),"\\|"),function(x) x[1])
m$T <- sapply(strsplit(as.character(mito$SNP),"\\|"),function(x) x[2])
m$C <- sapply(strsplit(as.character(mito$SNP),"\\|"),function(x) x[3])
m$G <- sapply(strsplit(as.character(mito$SNP),"\\|"),function(x) x[4])
但是從這裏有點卡住。我還遇到了「+ C,+ CC」和「-C」......的問題,這些SNP列中的字母將被忽略,但REF和ALT會變成:「A」和「AC,ACC」和「GC」和「G」。我也分裂了這一點:
m$indel1 <- sapply(strsplit(as.character(mito$INDEL),","),function(x) x[1])
m$indel2 <- sapply(strsplit(as.character(mito$INDEL),","),function(x) x[2])
如果這沒有任何意義;這裏是我想什麼不同的選項是:
CHROM POS REF SNP INDEL ALT
5 290 A --|T|--|-- 0 T
5 890 A A|T|--|G 0 T,G
7 672 A A|--|C|-- +C,+CC AC,ACC
9 459 GC A|T|--|G -C G
我只包含上面的例子,但在文件中的這一切不同的組合。這可以在R中完成,還是會變得非常複雜。
感謝提前...
注1:
首先,道歉,如果這不是明顯的在我的查詢與開始以上。並感謝那些迄今爲止幫助過的人。根據要求,ALT變量會根據INDEL前面是否有「 - 」符號或「+」符號而改變INDEL(即,這不會遵循與SNP大部分相同的規則行)。
例如:
「-C」(或只要有一個 「 - 」 號),如上所述,REF需要成爲REF + INDEL和ALT成爲REF(由分離的逗號,如果需要的話):
CHROM POS REF SNP INDEL ALT 9 459 GC A|T|--|G -C G
如果有一個 「+」 號(無論是+ C,+ CC或+ GGG或別的東西),REF保持不變,但ALT變成REF + INDEL(如果需要,用逗號分隔):
CHROM POS REF SNP INDEL ALT 7 672 A A|--|C|-- +C,+CC AC,ACC 9 987 T --|T|C|-- +GGG TGGG
這是一個不尋常的期待VCF,什麼程序進行呢?也許你應該只使用GATK之類的東西,默認情況下它會以你想要的格式輸出VCF。 – JeremyS
這不是一個VCF ...我們想要將TXT轉換爲VCF(可以這樣做) – user2726449
對不起,如果我錯過了某些東西,但是在那裏,還有'INDEL'值有兩個'-'或者' +'和'-'?即如'+ C,-CC'或'-C,-G'。如果是這樣的話,在這些情況下會發生什麼情況以「REF」和「ALT」? –