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

R使用genepop包计算Fst时出现无法打开文件报错的问题咨询

genepop包Fst()函数文件读取报错解决方案

问题场景

运行如下genepop Fst计算代码时触发报错:

library(genepop)
setwd("C:/Users/Admin/Documents/Test R")
infile<-file.choose()
Fst(
  infile,
  sizes = FALSE,
  pairs = T,
  outputFile = "Run0-Neu",
  dataType = "Diploid",
  verbose = interactive()
)

返回报错:

set_eof_check_EOLtype() cannot open file!
parseFile() cannot reopen C:\Users\Admin\Documents\Test although it could previously be opened.
Error in REstimatingSpatialStructureAlleleIdentyAllPopulationsPairs(inputFile,  : 
parseFile() cannot reopen input file.

相同R版本、相同代码在其他设备可正常运行,仅当前设备触发报错。

报错原因

从报错信息里的路径截断特征(设置的工作目录是C:/Users/Admin/Documents/Test R,但报错里尝试读取的路径被截断为C:\Users\Admin\Documents\Test)可以直接定位核心问题:
genepop的底层文件读写逻辑由C语言实现,无法识别包含空格、全角中文、特殊符号的文件路径,遇到空格时会直接把空格识别为路径终止符,导致路径读取不全,找不到目标文件。
其他低概率诱因:

  • genepop包版本过旧,存在已知的路径解析bug
  • 输入的genepop格式文件换行符为非通用格式,或被其他程序占用锁定
  • 文件编码不符合要求

解决方法

按优先级依次尝试即可:

  1. 清理路径中的空格和特殊字符(成功率90%以上)
    把存储输入文件的文件夹Test R重命名为无空格的名称,比如Test_R,同步修改代码里的工作目录路径:
    setwd("C:/Users/Admin/Documents/Test_R")
    
    注意检查文件全路径所有层级都不要出现中文、全角符号、空格、&/%等特殊字符。
  2. 用短路径函数绕开空格识别问题
    如果不想修改文件夹名称,调用R内置的shortPathName()函数将带空格的路径转换为Windows兼容的8.3短格式,修改文件读取行代码:
    infile <- shortPathName(file.choose())
    
  3. 检查输入文件状态
    • 关闭所有可能打开该输入文件的程序(WPS、Excel、文本编辑器等),解除文件占用
    • 用系统记事本打开输入文件,选择「另存为」,编码选ANSI,换行符选Windows CRLF格式后保存
  4. 重装最新版genepop包
    旧版本包存在部分路径解析bug,运行如下代码重装后重试:
    remove.packages("genepop")
    install.packages("genepop")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:09:33