You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中合并样本数量不同的两个VCF文件?

合并不同样本集VCF文件的解决方法

R语言(VariantAnnotation包)方案

你之前用rbind报错是因为两个VCF的样本列数不匹配,需要先将两个VCF的样本列对齐,补充缺失样本的基因型为缺失值(./.),再进行合并:

library(VariantAnnotation)

# 读取VCF文件,替换为你的参考基因组版本(如hg38)
vcf1 <- readVcf("n1.vcf", "hg19")
vcf2 <- readVcf("n2.vcf", "hg19")

# 获取所有样本的并集
all_samples <- union(colnames(vcf1), colnames(vcf2))

# 扩展两个VCF,补充缺失样本的基因型为缺失值
vcf1_expanded <- expand(vcf1, samples = all_samples)
vcf2_expanded <- expand(vcf2, samples = all_samples)

# 合并VCF
vcf_full <- rbind(vcf1_expanded, vcf2_expanded)

# 保存合并后的文件
writeVcf(vcf_full, "merged.vcf")

命令行(bcftools)方案

如果VCF文件较大,用bcftools更高效,自带的合并功能可直接处理不同样本集:

bcftools merge n1.vcf n2.vcf -o merged.vcf --force-samples

--force-samples参数会自动补充缺失样本的基因型为./.,同时统一元信息。

注意事项

  • 确保两个VCF的参考基因组版本一致,否则需先做链或参考序列的统一处理
  • 若两个VCF的INFO/FORMAT字段存在差异,可通过bcftools的--merge参数调整合并规则(如--merge both保留所有字段)

内容的提问来源于stack exchange,提问作者ALESSANDRA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 10:07:08