我写了一个使用rstudioapi::viewer()
函数的R软件包。显然,并非所有人都使用RStudio。我现在正在试图正确配置NAMESPACE
和DESCRIPTION
。使用建议的软件包时配置NAMESPACE和DESCRIPTION
所以不强迫用户安装一个包,他们并不需要(和/或将他们的系统没用),我试图把rstudioapi
在Suggests
部分,并称之为有条件的可用:
if(.Platform$GUI == "RStudio") {
if ("rstudioapi" %in% rownames(installed.packages())) {
rstudioapi::viewer(outfile_path)
} else {
message("To view html content in RStudio, run install.packages('rstudioapi').")
message("Switching method to 'browser'")
method <- "browser"
}
但在R CMD CHECK
,我得到:
checking dependencies in R code ... WARNING
'::' or ':::' import not declared from: 'rstudioapi'
所以我去把它声明,将importFrom(rstudioapi, viewer)
我NAMESPACE
。结果:
checking package dependencies ... ERROR
Namespace dependency not required: 'rstudioapi'
返回到official docs,我也试过如下:
if (requireNamespace("rstudioapi", quietly = TRUE)) {
rstudioapi::viewer(outfile_path)
} else { ...
无济于事:
checking dependencies in R code ... WARNING
'::' or ':::' import not declared from: 'rstudioapi'
'loadNamespace' or 'requireNamespace' call not declared from: 'rstudioapi'
所以我要么得到一个警告,没有报关它,或者声明它的错误。如果你不这样做,那该死的,如果你确实有点不对劲,更是该死的。任何帮助赞赏。
如果在'R'目录中的任何代码中都使用了'rstudioapi',则应该将它添加到DESCRIPTION文件中的'Imports'。 'Suggests'适用于您的示例或短片中运行的代码,但不用于实际代码。 – Benjamin
不符合官方文档...请参阅https://cran.r-project.org/doc/manuals/r-release/R-exts.html中的第1.1.3.1节...可以预料,某些代码将在一些平台上相关,而不是其他人,所以我很确定必须有一个解决方案... –
问题解决了...请参阅下面我自己的答案。 –