【发布时间】:2017-09-04 20:59:20
【问题描述】:
我编写了一个使用rstudioapi::viewer() 函数的R 包。显然,并不是每个人都使用 RStudio。我现在绕着圈子试图正确配置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'
所以我要么因未声明而收到警告,要么因声明而收到错误。如果你不这样做该死的,如果你做某事更该死。任何帮助表示赞赏。
【问题讨论】:
-
如果
rstudioapi在R目录中的任何代码中使用,您应该将它添加到您的DESCRIPTION 文件中的Imports。Suggests适用于在您的示例或小插图中运行的代码,但未在实际代码中使用。 -
不是根据官方文档...请参阅cran.r-project.org/doc/manuals/r-release/R-exts.html 中的第 1.1.3.1 节...可以预期某些代码将在某些平台上相关而不是其他平台,所以我很确定一定有解决方案...
-
问题已解决...请参阅下面我自己的答案。
-
我的立场是正确的。
标签: r namespaces package rstudio