本地R包调用signatureSearch函数时无法加载clue_moa_list数据求助
解决signatureSearch::addGESSannot加载clue_moa_list失败的问题
问题根源
signatureSearch::addGESSannot内部调用data("clue_moa_list", envir = environment())时未指定数据集所属的包,导致在你的R包环境中无法定位到该数据集。这个数据集实际属于signatureSearch或signatureSearchData包,默认的data()调用会优先在当前包环境查找,因此触发找不到对象的报错。
解决方案
方案1:在你的函数中提前显式加载数据集
在lincs_connectivity函数开头,先加载clue_moa_list并指定所属包,确保addGESSannot调用时能访问到该对象:
lincs_connectivity <- function(){ # 显式加载clue_moa_list,根据实际归属指定package参数 data("clue_moa_list", package = "signatureSearch") # 若数据在signatureSearchData则改为该包名 # 后续调用addGESSannot及其他逻辑 ... res <- signatureSearch::addGESSannot(...) ... }
方案2:确认依赖包的正确声明
检查你的包的DESCRIPTION文件,确保Imports字段已包含signatureSearch和signatureSearchData(若数据归属后者):
Imports: AnnotationDbi, org.Hs.eg.db, signatureSearch, signatureSearchData, dplyr
注意:仅靠Imports声明不足以让data()自动定位跨包数据集,仍需显式指定package参数。
方案3:验证signatureSearch版本兼容性
你参考的是signatureSearch的devel分支代码,该分支可能调整了clue_moa_list的存储位置(比如从主包移到signatureSearchData)。可以:
- 查看对应包的官方文档,确认
clue_moa_list的所属包 - 若开发版存在兼容性问题,可切换到稳定版测试
内容的提问来源于stack exchange,提问作者Komal Rathi
相关产品推荐
相关产品推荐

