2013-07-31 48 views
0

我有一個包含2個的DNA序列(ORF)的文件(data.txt):R:如何使用'translate'函數的輸出來編寫表格?

data = readDNAStringSet(file="data.txt") 
data 
# A DNAStringSet instance of length 2 
# width seq              names 
#[1] 57 ATGACCCCCACCTCCATCCCCACACTTCTATCCCGCTGCCCCGCCTCTCTCCCCTAA GPG 
#[2] 54 ATGACCCATGAGCACCATGCAGCCAAAACCCTGGGAATCGGCAAAGCCATCTAG  PfK 

我想將它們轉換爲氨基酸:

t=vector(mode="list", length=length(data)) 
for (i in seq_along(data)) 
{ 
t[[i]]=translate(data[[i]]) 
} 
t 
#[[1]] 
#19-letter "AAString" instance 
#seq: MTPTSIPTLLSRCPASLP* 

#[[2]] 
#18-letter "AAString" instance 
#seq: MTHEHHAAKTLGIGKAI* 

然後寫一個表,並具有利用輸出:

tt=do.call(rbind,t) 
write.table(tt,"aa.txt",sep="\t\t") 

但這些命令不起作用。我找不到問題。我怎樣才能寫一張桌子?

注:translate是從[seqinr]和readDNAStringSet的函數是一個函數,從[Biostrings]。

+0

「不工作」是什麼意思?這兩個向量的長度不同,如果你將它們綁定在一起,這會導致警告。 – Roland

+0

@ Ronald:「tt = do.call(rbind,t)」: .Method錯誤(...,deparse.level = deparse.level): 沒有將此S4類強制爲向量的方法 – YBC

+0

在黑暗中:儘量不要使用't'作爲變量名稱。再試一次,但將其命名爲「t1」或其他。 – joran

回答

1

我不知道你爲什麼需要seqinrBiostrings做你需要的一切。

library("Biostrings") 

dna <- readDNAStringSet(file="data.txt") 
aa <- translate(dna) 

write.table(as.character(aa), file="aa.txt", sep="\t\t") 

也許你想使用writeXStringSet而不是write.table

+0

@ sgibb:非常感謝。 – YBC

相關問題