使用建议包时配置 NAMESPACE 和 DESCRIPTION
Configuring NAMESPACE and DESCRIPTION when using a Suggested Package
我编写了一个使用 rstudioapi::viewer()
函数的 R 包。显然,并不是每个人都使用 RStudio。我现在 运行 正在尝试正确配置 NAMESPACE
和 DESCRIPTION
。
为了不强迫用户安装他们不需要的软件包(and/or 在他们的系统上没有用),我尝试将 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'
所以我要么收到未声明它的警告,要么收到声明它的错误。如果你不这样做,该死的,如果你做了某种事情,那就更该死了。任何帮助表示赞赏。
我有一些想法可能会有所帮助。
参考 Hadley Wickham 的在线 R 包书籍可能会有用:http://r-pkgs.had.co.nz/description.html。我从他的书中学到了大部分(很少)关于包的知识。
我认为您可以在 "Suggests" 字段下使用以下代码将包 rstudioapi
添加到您的 DESCRIPTION 文件中:
devtools::use_package("rstudioapi", "Suggests")
我一直使用 Roxygen2
包(最近 devtools
)与 NAMESPACE 文件交互,所以我不手动编辑 NAMESPACE。
这是我的 DESCRIPTION 文件的样子:
Package: stack3
Type: Package
Title: What the Package Does (Title Case)
Version: 0.1.0
Author: Who wrote it
Maintainer: The package maintainer <yourself@somewhere.net>
Description: More about what it does (maybe more than one line)
Use four spaces when indenting paragraphs within the Description.
License: What license is it under?
Encoding: UTF-8
LazyData: true
Suggests:
rstudioapi
RoxygenNote: 5.0.1
然后我运行
devtools::build()
获取stack3_0.1.0.tar.gz文件。请注意,我将我的包命名为 stack3
。在 运行 R CMD CHECK stack3_0.1.0.tar.gz 中,我发现我没有收到任何错误和一个警告。警告是由于在 DESCRIPTION 文件中默认遵循 License: 的文本。
R CMD CHECK stack3_0.1.0.tar.gz
* using log directory ‘/Users/frederickboehm/Box Sync/stack3.Rcheck’
* using R version 3.3.3 (2017-03-06)
* using platform: x86_64-apple-darwin13.4.0 (64-bit)
* using session charset: UTF-8
* checking for file ‘stack3/DESCRIPTION’ ... OK
* checking extension type ... Package
* this is package ‘stack3’ version ‘0.1.0’
* package encoding: UTF-8
* checking package namespace information ... OK
* checking package dependencies ... OK
* checking if this is a source package ... OK
* checking if there is a namespace ... OK
* checking for executable files ... OK
* checking for hidden files and directories ... OK
* checking for portable file names ... OK
* checking for sufficient/correct file permissions ... OK
* checking whether package ‘stack3’ can be installed ... OK
* checking installed package size ... OK
* checking package directory ... OK
* checking DESCRIPTION meta-information ... WARNING
Non-standard license specification:
What license is it under?
Standardizable: FALSE
* checking top-level files ... OK
* checking for left-over files ... OK
* checking index information ... OK
* checking package subdirectories ... OK
* checking whether the package can be loaded ... OK
* checking whether the package can be loaded with stated dependencies ... OK
* checking whether the package can be unloaded cleanly ... OK
* checking whether the namespace can be loaded with stated dependencies ... OK
* checking whether the namespace can be unloaded cleanly ... OK
* checking loading without being on the library search path ... OK
* checking examples ... NONE
* checking PDF version of manual ... OK
* DONE
Status: 1 WARNING
See
‘/Users/frederickboehm/Box Sync/stack3.Rcheck/00check.log’ for details.
希望我理解了您的问题并且希望此回复对您有所帮助。
我明白了为什么会出现这些警告/错误。当我将 rstudioapi
添加到 Suggests:
列表时,我无意中创建了一个 second Suggests:
列表。只有第二个被考虑在内(是的,现有的在 DESCRIPTION 文件的底部,我完全错过了它。我不会删除它以防其他人发生......
我想到的另一个选择是不在 DESCRIPTION
文件中的任何地方列出 rstudioapi
。 RStudio 有 tips for using the viewer 可能会有帮助并且不需要依赖 rstudioapi
.
他们的建议是使用
viewer <- getOption("viewer")
if (!is.null(viewer))
viewer("http://localhost:8100")
else
utils::browseURL("http://localhost:8100")
这是可行的,因为在启动时,RStudio 创建了一个名为 viewer
的选项,并用一个函数填充它。如果你没有使用 RStudio,getOption("viewer")
将 return NULL
并且你可以重定向它以使用系统的默认浏览器。这基本上就是您已经完成的工作,但不需要额外的依赖项。
这还有一个好处,即比 installed.packages
检查快 1000 倍,但这仍然以纳秒为单位,所以可能不是一个大问题(注意,我只安装了 192 个包。它可能在已在 CRAN 上下载所有内容的系统上需要更长的时间。
我编写了一个使用 rstudioapi::viewer()
函数的 R 包。显然,并不是每个人都使用 RStudio。我现在 运行 正在尝试正确配置 NAMESPACE
和 DESCRIPTION
。
为了不强迫用户安装他们不需要的软件包(and/or 在他们的系统上没有用),我尝试将 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'
所以我要么收到未声明它的警告,要么收到声明它的错误。如果你不这样做,该死的,如果你做了某种事情,那就更该死了。任何帮助表示赞赏。
我有一些想法可能会有所帮助。
参考 Hadley Wickham 的在线 R 包书籍可能会有用:http://r-pkgs.had.co.nz/description.html。我从他的书中学到了大部分(很少)关于包的知识。
我认为您可以在 "Suggests" 字段下使用以下代码将包 rstudioapi
添加到您的 DESCRIPTION 文件中:
devtools::use_package("rstudioapi", "Suggests")
我一直使用 Roxygen2
包(最近 devtools
)与 NAMESPACE 文件交互,所以我不手动编辑 NAMESPACE。
这是我的 DESCRIPTION 文件的样子:
Package: stack3
Type: Package
Title: What the Package Does (Title Case)
Version: 0.1.0
Author: Who wrote it
Maintainer: The package maintainer <yourself@somewhere.net>
Description: More about what it does (maybe more than one line)
Use four spaces when indenting paragraphs within the Description.
License: What license is it under?
Encoding: UTF-8
LazyData: true
Suggests:
rstudioapi
RoxygenNote: 5.0.1
然后我运行
devtools::build()
获取stack3_0.1.0.tar.gz文件。请注意,我将我的包命名为 stack3
。在 运行 R CMD CHECK stack3_0.1.0.tar.gz 中,我发现我没有收到任何错误和一个警告。警告是由于在 DESCRIPTION 文件中默认遵循 License: 的文本。
R CMD CHECK stack3_0.1.0.tar.gz
* using log directory ‘/Users/frederickboehm/Box Sync/stack3.Rcheck’
* using R version 3.3.3 (2017-03-06)
* using platform: x86_64-apple-darwin13.4.0 (64-bit)
* using session charset: UTF-8
* checking for file ‘stack3/DESCRIPTION’ ... OK
* checking extension type ... Package
* this is package ‘stack3’ version ‘0.1.0’
* package encoding: UTF-8
* checking package namespace information ... OK
* checking package dependencies ... OK
* checking if this is a source package ... OK
* checking if there is a namespace ... OK
* checking for executable files ... OK
* checking for hidden files and directories ... OK
* checking for portable file names ... OK
* checking for sufficient/correct file permissions ... OK
* checking whether package ‘stack3’ can be installed ... OK
* checking installed package size ... OK
* checking package directory ... OK
* checking DESCRIPTION meta-information ... WARNING
Non-standard license specification:
What license is it under?
Standardizable: FALSE
* checking top-level files ... OK
* checking for left-over files ... OK
* checking index information ... OK
* checking package subdirectories ... OK
* checking whether the package can be loaded ... OK
* checking whether the package can be loaded with stated dependencies ... OK
* checking whether the package can be unloaded cleanly ... OK
* checking whether the namespace can be loaded with stated dependencies ... OK
* checking whether the namespace can be unloaded cleanly ... OK
* checking loading without being on the library search path ... OK
* checking examples ... NONE
* checking PDF version of manual ... OK
* DONE
Status: 1 WARNING
See
‘/Users/frederickboehm/Box Sync/stack3.Rcheck/00check.log’ for details.
希望我理解了您的问题并且希望此回复对您有所帮助。
我明白了为什么会出现这些警告/错误。当我将 rstudioapi
添加到 Suggests:
列表时,我无意中创建了一个 second Suggests:
列表。只有第二个被考虑在内(是的,现有的在 DESCRIPTION 文件的底部,我完全错过了它。我不会删除它以防其他人发生......
我想到的另一个选择是不在 DESCRIPTION
文件中的任何地方列出 rstudioapi
。 RStudio 有 tips for using the viewer 可能会有帮助并且不需要依赖 rstudioapi
.
他们的建议是使用
viewer <- getOption("viewer")
if (!is.null(viewer))
viewer("http://localhost:8100")
else
utils::browseURL("http://localhost:8100")
这是可行的,因为在启动时,RStudio 创建了一个名为 viewer
的选项,并用一个函数填充它。如果你没有使用 RStudio,getOption("viewer")
将 return NULL
并且你可以重定向它以使用系统的默认浏览器。这基本上就是您已经完成的工作,但不需要额外的依赖项。
这还有一个好处,即比 installed.packages
检查快 1000 倍,但这仍然以纳秒为单位,所以可能不是一个大问题(注意,我只安装了 192 个包。它可能在已在 CRAN 上下载所有内容的系统上需要更长的时间。