2012-02-17 150 views
1

我有以下問題:我有10個不同的FASTA文件,每個文件中有一千個序列。我想從每個fasta文件讀取所有序列,然後(用粘貼)創建一個包含所有序列的大文件。如何從R中讀取多個FASTA文件?

我的問題如下:如何在同一時間從不同的文件讀取?

我想:

a<-list.files() 

然後

for (x in a) { temp<-read.table(x) seq<-summary(temp) print (seq) 

,但它不能正常工作。我也嘗試命令read.fasta,但它給了我一個奇怪的輸出(並非所有的序列)

非常感謝您的幫助,它將非常感激!

法比奧

PS。我一個星期前開始與R合作,所以請耐心等待,即使這是一個愚蠢的問題!

+0

如果您在這裏沒有得到幫助,也許在Bioconductor郵件列表上試試您的問題(指出您是從StackOverflow交叉發佈的)。 – 2012-02-17 13:36:01

+0

您可以成功導入單個文件嗎?爲什麼在命令之間沒有「;」或新行? – 2012-02-17 14:18:01

回答

2

Bioconductor有很多與DNA序列一起工作的軟件包。與

source("http://bioconductor.org/biocLite.R") 
biocLite("ShortRead") 

加載庫安裝ShortRead包和諮詢幫助頁面readFasta

library(ShortRead) 
?readFasta 

找出一個模式(像list.files)匹配你想讀的FASTA文件,並讀取模式匹配到一個單一的對象的所有文件FASTA

patt <- "fasta$" 
fasta <- readFasta("/my/directory/containing/fasta/files", patt) 

然後寫入對象出來

writeFasta(fasta, "my_destination.fasta") 

但實際上R並不是合併文件的正確工具;可能你想要做更多有趣的事情,其中​​一些可能會在短文的ShortRead,Biostrings描述,並GenomicRanges

browseVignettes("ShortRead") 
browseVignettes("Biostrings") 
browseVignettes("GenomicRanges") 

Bioconductor mailing list是獲得Bioconductor的包支持的最佳場所。

+0

非常感謝。然而,而不是readFasta ...我使用了命令apply(lapply(myseqs,function(x),read.fasta(x))。 – fabioln79 2012-02-21 13:02:28