如何使用R语言批量将TXT格式DNA序列文件转换为Fasta格式
R环境批量转换DNA序列TXT为FASTA格式实现方案
操作流程
- 先将所有待转换的TXT序列文件放到同一个文件夹内,避免混入其他无关TXT文件
- 运行以下R代码,替换代码里的工作目录路径为你自己的文件夹路径即可
批量转换代码(每个TXT对应生成单独FASTA文件)
# 1. 设置工作目录为存放TXT序列文件的文件夹路径 setwd("替换为你的文件夹实际路径,比如C:/dna_seq/ 或者 /home/user/dna_seq/") # 2. 读取文件夹内所有后缀为.txt的文件列表 txt_file_list <- list.files(pattern = "\\.txt$", full.names = FALSE) # 3. 循环处理每个文件 for (single_txt in txt_file_list) { # 读取文件全部内容,关闭冗余警告 raw_text <- readLines(single_txt, warn = FALSE) # 清除空行、空格、换行符等冗余内容,拼接为完整DNA序列 dna_seq <- gsub("\\s+", "", paste(raw_text, collapse = "")) # 提取去掉.txt后缀的文件名作为FASTA序列ID seq_name <- sub("\\.txt$", "", single_txt) # 按FASTA格式拼接内容:第一行>加序列名,第二行是完整序列 fasta_text <- c(paste0(">", seq_name), dna_seq) # 写出为同名.fa格式文件 writeLines(fasta_text, con = paste0(seq_name, ".fa")) }
可选:合并所有序列到单个FASTA文件
如果不需要拆分单独文件,要把所有序列整合到一个FASTA文件里,用以下代码替换上述循环部分即可:
all_fasta_content <- c() for (single_txt in txt_file_list) { raw_text <- readLines(single_txt, warn = FALSE) dna_seq <- gsub("\\s+", "", paste(raw_text, collapse = "")) seq_name <- sub("\\.txt$", "", single_txt) all_fasta_content <- c(all_fasta_content, paste0(">", seq_name), dna_seq) } # 写出为总FASTA文件 writeLines(all_fasta_content, con = "all_sequences.fasta")
说明
- 代码自动兼容TXT文件内序列存在换行、空行、多余空格的情况,会自动清理后拼接为标准连续序列
- 该方法不依赖系统命令,在Windows、macOS、Linux系统的R环境下均可正常运行,不存在
cat命令的系统兼容性问题
内容的提问来源于stack exchange,提问作者user15708301
相关产品推荐
相关产品推荐

