r - 检查错误--as-cran“没有名为...的包”
问题描述
我有一个包的修订版,其中我添加了一些使用ggplot2包的绘图代码以及来自包scales的自定义比例。特别是,新代码有一行引用了scales包,格式如下:
trans = scales::trans_new("new scale", ...)
我将包发送到 Winbuilder 进行检查,我收到此错误:
Error in loadNamespace(name) : there is no package called 'scales'
...确实,如果我运行,我会遇到同样的错误R CMD check --as-cran
是的,我的系统上安装了秤。
是的,秤包含
Suggests
在我的DESCRIPTION
文件中;我对此进行了双重和三重检查。是的,Scales似乎是 CRAN 上仍然可用的一个包,具有大量反向依赖项。
我的代码中还有几十个ggplot2::xxxx
例程调用,而且ggplot2也在Suggests
. 那里没有错误。
我可能做错了什么?
解决方案
我想通了;这有点微妙(至少对于像我这样的人来说)。
在我的包中我从包中调用函数的其他地方Suggests
,我也有一行代码,如下所示:
if (!requireNamespace("ggplot2", quietly = TRUE))
stop ("The 'ggplot2' package is not installed installed.", call. = FALSE)
... code that calls ggplot2:: functions
这里的问题是(a)我没有这样的检查scales
; 但更重要的是,(b) 上面的分配trans = scales::...
是在我的包的命名空间中。
所以我所做的就是将分配转移trans
到使用它的函数的内部,并在它之前requireNamespace()
进行类似于上面的测试。现在我的包裹检查至少通过了--as-cran
检查中的这一点。
推荐阅读
- c++ - c++ - 这会导致任何问题吗?使用将自身作为参数传递的函数分配 var(我很难解释)
- python - django python 中(POST 方法)处的 EncodeError。回复后 500
- laravel - 产品未删除
- angular - 如何更改图表中的时间格式?
- concurrency - 包装与 ConcurrentHashMap 同步
- python - 在 dask 数据框中,行与其前导之间的差异为 3 行
- amazon-web-services - 开发人员访问 AWS
- awk - 用于读取每行中具有不同字段数的输入文件的 awk 脚本
- google-cloud-datastore - 如何将数据插入数据存储区
- javascript - [ERR_HTTP_HEADERS_SENT]:发送到客户端后无法设置标头