2013-10-14 31 views
-1

在讀取與read.alignment(庫seqinr)的對齊後,我有一個類對齊(secuen)對象。它有四個組件,我感興趣的是「nam」,它存儲了secuences的名稱。我還有一個帶有兩個變量的數據框架(樣本),其中一個具有序列名稱(它具有比第一個對象更多的序列名稱)以及每個序列所屬樣本的名稱。我想用兩個對象之間的序列名稱來替換序列名稱的樣本名稱。我嘗試過使用grep,還有一些for循環,但我無法得到它。 實施例從列表的組件中替換元素

> sequen$nam #(length 3091) 
"HZSC42M02F3H7C" "HZSC42M02F2MMT" "HZSC42M02F03D5" 
> samples 
V1    V2 
HZSC42M02F3H7C sample_1 
HZSC42M02F2MMT sample_2 
HZSC42M02F03D5 sample_3 

sequen$nam(長度3091)是一個矢量(is.vector返回TRUE)和字符(is.character返回TRUE),但sample$V1(長度61632)不是一個矢量,也不是字符

如何能我繼續?我與R工作

+1

有人猜測,樣本是一個數據框,樣本$ V1是一個因素。 –

回答

0

我終於得到了解決,

與macth尋找到序列名在兩個文件中一致

test<-match(sequen$nam,samples$V1) 

然後從一個文件中刪除非重合列和唯一保存列新名稱

pre<-sample[test,] 
pre1<-pre[,2] 

最後用新序列名稱(pre1)和序列列表中的序列寫入新的fasta文件。

write.fasta(sequences = sec$seq, names = pre1, nbchar = 478, file.out = "final_test.fasta")