我正在尝试匹配具有相似文件名的文件,以用作函数的输入。例如如果目录中的文件名为:
atac.macaque.R1.fastq.gz
atac.macaque.R2.fastq.gz
atac.human.R1.fastq.gz
atac.human.R2.fastq.gz
有没有一个函数可以识别atac.macaque.R1.fastq.gz和atac.macique.R2.fastq.gz是对的,应该分别作为x和y输入到将读取这些文件的函数中?
我希望找到一个函数,它可以遍历目录中的所有文件对(它们都以不同的名称开始,即atac.human与atac.macaque(,然后应用于我使用的文件读取函数。
每个文件都有一对吗?如果是,那么您可以获得文件路径的向量,并在对名称排序后将它们放入矩阵中。
x <- sort(list.files('/path/to/directory', pattern = "\.gz$"))
mat <- matrix(x, ncol = 2)
mat
# [,1] [,2]
#[1,] "atac.human.R1.fastq.gz" "atac.macaque.R1.fastq.gz"
#[2,] "atac.human.R2.fastq.gz" "atac.macaque.R2.fastq.gz"
现在,每一列都是一对,如果你有一些函数以这两个文件为参数,你可以使用apply
逐列将这些函数应用于每一对。
some_func <- function(x, y) #does some thing with x & y
apply(mat, 2, some_func)