我有一個要使用pileup函式的已排序 bam 檔案的目錄。函式的輸出pileup是一個資料框。然后我想使用每個檔案的結果并形成一個資料框。
對于每個檔案,我使用以下代碼:
r16<-pileup(filename, index=filename, scanBamParam = ScanBamParam(), pileupParam = PileupParam())
r16$sample_id <- "sample id"
對于sample_id列,我希望它是檔案的名稱,例如:
- 檔案名是
file1.sorted.bam,我想sample_id成為file1
在處理完所有檔案后,我將使用rbind獲取大資料框并將其保存到 RData 檔案中。
到目前為止,我已經嘗試在它們上使用回圈,但它沒有給我任何輸出。
library(pasillaBamSubset)
library(Rsamtools)
filenames<-Sys.glob("*.sorted.bam")
for (file in filenames) {
output <- pileup(pileup(filenames, index=filenames, scanBamParam = ScanBamParam(), pileupParam = PileupParam()))
save(output, file = "res.RData")
}
uj5u.com熱心網友回復:
我假設您想將所有 data.frames 堆疊在一起(行系結)。map(來自 purrr)或者lapply可以將函式應用于給定串列/向量中的每個專案(在這種情況下為每個檔案名)。map_dfr做同樣的事情并且 row 系結所有的輸出。
filenames <- list.files(pattern = "*.sorted.bam")
library(purrr)
purrr::map_dfr(filenames, ~pileup(.x,
index = .x,
scanBamParam = ScanBamParam(),
pileupParam = PileupParam()))
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/446342.html
