循环遍历文件并使用函数,然后使用该结果在r中形成数据帧



我有一个排序的bam文件目录,我想使用pileup函数。pileup函数的输出是一个数据帧。然后我想使用每个文件的结果并形成一个数据帧。

对于每个文件,我使用以下代码:

r16<-pileup(filename, index=filename, scanBamParam = ScanBamParam(), pileupParam = PileupParam())
r16$sample_id <- "sample id"

对于sample_id列,我希望它是文件的名称,例如:

  • 文件名为file1.sorted.bam,我希望sample_idfile1

在处理完所有文件后,我会使用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")
}

我假设您希望将所有数据帧堆叠在一起(行绑定(。map(来自purrr(或lapply可以将函数应用于给定的列表/矢量(在这种情况下,每个文件名(。CCD_ 10执行相同的操作并且行绑定所有输出。

filenames <- list.files(pattern = "*.sorted.bam")
library(purrr)
purrr::map_dfr(filenames, ~pileup(.x, 
index = .x,
scanBamParam = ScanBamParam(),
pileupParam = PileupParam()))

最新更新