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

R包inst目录复杂文件结构问题:R CMD CHECK误删非空目录

解决R CMD CHECK误删inst下嵌套目录的问题

核心原因

R CMD CHECK在临时构建包的过程中,若无法检测到目录内存在被有效引用的文件,会误将实际非空的嵌套目录判定为空并删除,导致后续代码加载失败。

解决方案

1. 修正文件路径引用(根本解决)

不要直接使用本地相对路径(如file.path("inst", "lexicons", "com", ...)),改用R包标准的system.file()函数获取安装后文件的正确路径,确保包在构建、检查、安装全流程中都能准确定位文件:

load_schema <- function(schema_name) {
  schema_path <- system.file("lexicons", "com", paste0(schema_name, ".json"), package = "blueRsky")
  if (schema_path == "") {
    stop("目标Schema文件未找到")
  }
  jsonlite::read_json(schema_path)
}

修正后,R CMD CHECK能检测到目录内的文件被实际调用,不会误判目录为空。

2. 添加占位文件(兜底方案)

如果路径修正后仍存在问题,可在inst/lexicons/com目录下添加一个空的占位文件(比如命名为.keep)。这个空文件会让R明确识别到目录非空,避免被判定为无用目录删除。注意不要用.gitkeep,R构建工具默认会忽略Git相关隐藏文件。

3. 调整检查参数(临时应急)

运行R CMD CHECK时添加--no-clean参数,阻止检查过程清理临时构建目录:

R CMD CHECK --no-clean blueRsky

此方法仅作为临时应急手段,无法从根本上解决包的路径逻辑问题,不推荐长期使用。

其他排查方向

  • 检查DESCRIPTION文件的LazyData设置,若设为false可能影响非R格式数据文件的加载,可尝试改为LazyData: true。
  • 确认所有JSON lexicon文件未被.Rbuildignore或.Rinstignore规则排除,确保它们能被正常包含到构建的包中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:07:59