📖 什么是VCF文件?
VCF(Variant Call Format)是存储基因变异信息的标准文件格式,包含SNP、INDEL等变异信息。
⚡ 一行代码读取VCF
# 使用vroom读取VCF文件(推荐)
library(vroom)
# VCF默认有##注释信息,使用comment = "##"跳过注释
b <- vroom("./ieu-b-5089.vcf.gz", comment = "##")
# 查看数据结构
head(b)
dim(b)
💡 提示:vroom是readr的升级版,特别适合读取大型VCF文件,速度比传统方法快10倍以上。
📦 安装vroom包
# 安装vroom
install.packages("vroom")
# 或者使用Bioconductor版本(处理VCF更专业)
if (!require("BiocManager")) install.packages("BiocManager")
BiocManager::install("VariantAnnotation")
🚀 进阶用法
选择性读取特定列
# 只读取需要的列
b <- vroom("./file.vcf.gz",
comment = "##",
col_select = c(ID, REF, ALT, INFO))
# 使用col_types指定列类型
b <- vroom("./file.vcf.gz",
comment = "##",
col_types = cols(ID = "c", REF = "c", ALT = "c"))
读取远程VCF文件
# 直接从URL读取
b <- vroom("https://zenodo.org/record/xxx/file.vcf.gz",
comment = "##")
处理INFO列
# VCF的INFO列包含大量信息,需要解析
# 使用VariantAnnotation包解析
library(VariantAnnotation)
# 读取VCF文件
vcf <- readVcf("file.vcf.gz", genome = "GRCh37")
# 提取INFO字段
info(vcf)
⚠️ 注意事项
- • VCF文件通常较大,推荐使用vroom的压缩文件直接读取功能
- • 注释行(##开头)需要使用comment参数跳过
- • 大文件建议设置n_max参数限制读取行数
- • 读取后检查列名,有些VCF需要手动处理格式