如何在R语言中使用正则表达式批量生成配对文件列表?
用正则表达式批量生成配对文件列表(R语言)
核心思路
通过提取文件名中的共同标识,自动将配对文件分组,替代手动逐个指定的繁琐操作。以下是针对常见配对文件命名规则的实现方案:
示例实现(以R1/R2配对文件为例)
假设你的文件命名规则为 样本ID_R1.后缀 和 样本ID_R2.后缀(比如测序数据的正向/反向读段),代码如下:
# 1. 获取目标目录下的所有配对文件(替换为你的实际路径) file_names <- list.files( path = "./your_data_dir", pattern = "_R[12]\\.fastq$", # 匹配_R1.fastq或_R2.fastq结尾的文件 full.names = TRUE # 可选:获取完整文件路径,而非仅文件名 ) # 2. 从文件名中提取配对的共同标识(样本ID) sample_ids <- sub("^(.*)_R[12]\\.fastq$", "\\1", file_names) # 3. 按样本ID分组生成配对文件列表 files <- split(file_names, sample_ids) # 可选:过滤掉非配对的文件组(确保每个组有2个文件) files <- files[sapply(files, length) == 2] # 查看最终结构 str(files)
自定义适配(不同命名规则)
如果你的配对文件命名是其他规则(比如样本ID_forward.txt/样本ID_reverse.txt),只需调整正则表达式即可:
# 提取样本ID的正则适配 sample_ids <- sub("^(.*)_(forward|reverse)\\.txt$", "\\1", file_names)
输出结构说明
最终生成的files结构与你期望的一致:一个包含4个元素的list,每个元素是对应样本的两个配对文件路径/名称,示例str(files)输出如下:
List of 4 $ sample1: chr [1:2] "./your_data_dir/sample1_R1.fastq" "./your_data_dir/sample1_R2.fastq" $ sample2: chr [1:2] "./your_data_dir/sample2_R1.fastq" "./your_data_dir/sample2_R2.fastq" $ sample3: chr [1:2] "./your_data_dir/sample3_R1.fastq" "./your_data_dir/sample3_R2.fastq" $ sample4: chr [1:2] "./your_data_dir/sample4_R1.fastq" "./your_data_dir/sample4_R2.fastq"
内容的提问来源于stack exchange,提问作者Vinod Kumar
相关产品推荐
相关产品推荐

