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

手动修改.bgen配套.sample文件:如何在R中导出带双表头的.txt文件?

解决plink识别.bgen配套.sample文件第二表头报错的方案

plink要求的.bgen配套.sample文件格式固定为:

  • 第1行:列名表头
  • 第2行:各列数据类型标识(ID_1、ID_2、missing列对应值为0,sex列是离散编码填D)
  • 第3行及之后:实际样本数据,行数必须和.bgen文件的样本数完全一致

你当前报错的两个核心原因:

  • 第二行的类型标识格式错误,带括号和逗号,导致plink无法识别为第二表头,直接将其判定为第一行样本,最终样本计数多1
  • 你把类型标识行放到了样本数据框中导出,导致真实样本行数和.bgen不匹配

方案1:R中直接导出符合规范的.sample文件

首先确认你的samples数据框已经删掉了那行(0, 0, 0, D)的内容,只保留26622行真实样本数据,再运行以下代码:

# 创建文件连接
con <- file("samples_bgen.sample", "w")
# 写入第一行表头
writeLines("ID_1 ID_2 missing sex", con)
# 写入第二行类型表头,无括号无逗号,空格分隔
writeLines("0 0 0 D", con)
# 写入所有样本数据,不需要再输出列名
write.table(
  x = samples,
  file = con,
  sep = " ",
  row.names = FALSE,
  col.names = FALSE,
  quote = FALSE
)
# 关闭文件连接
close(con)

方案2:直接修改已导出的.txt文件

如果不想重新运行R导出,可以直接修改现有文件:

  1. 打开samples_bgen.txt,删除第二行里的括号和逗号,把(0, 0, 0, D)改成0 0 0 D
  2. 检查样本数据部分:如果第二行原来属于数据框的第一行,就删掉数据部分多出来的那行类型标识内容,保证从第三行开始的真实样本数刚好是26622行
  3. 改后缀为.sample即可

验证

修改完成后重新运行你的plink命令:

plink --bgen data.bgen --sample samples_bgen.sample --make-bed --out data_output

即可正常执行,不会再报样本数不匹配或第二表头无效的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:45:02