遍历文件并使用函数,然后使用该结果在 r 中形成数据框
Loop through files and use functions, then use that result to form a dataframe in r
我有一个排序的 bam 文件目录,我想使用 pileup
函数。 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")
}
我假设您想将所有 data.frames 堆叠在一起(行绑定)。 map
(来自 purrr)或 lapply
可以对每个项目应用一个函数
给定的 list/vector(在本例中为每个文件名)。 map_dfr
做同样的事情,行绑定所有输出。
filenames <- list.files(pattern = "*.sorted.bam")
library(purrr)
purrr::map_dfr(filenames, ~pileup(.x,
index = .x,
scanBamParam = ScanBamParam(),
pileupParam = PileupParam()))
我有一个排序的 bam 文件目录,我想使用 pileup
函数。 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")
}
我假设您想将所有 data.frames 堆叠在一起(行绑定)。 map
(来自 purrr)或 lapply
可以对每个项目应用一个函数
给定的 list/vector(在本例中为每个文件名)。 map_dfr
做同样的事情,行绑定所有输出。
filenames <- list.files(pattern = "*.sorted.bam")
library(purrr)
purrr::map_dfr(filenames, ~pileup(.x,
index = .x,
scanBamParam = ScanBamParam(),
pileupParam = PileupParam()))