R包使用私有与商业数据库通信 用于建立连接的user_name和密码。 在package_vignette.Rmd文件中有一大块代码:
```{r, eval = TRUE}
# set user_name and password from user's configuration file
set_connection(file = "/home/user001/connection.config")
# ask data base for all metrics it has
my_data <- get_all_metrics()
# display names of fetched metrics
head(my_data$name)
```
我无权向CRAN提供实际的用户名和密码, 所以我无法提供真正的&#39; connection.config&#39;包含文件。 因此,当然,此代码片段在CRAN检查期间会导致错误。
我知道两种方法来解决CRAN检查:
使用knitr选项:eval = FALSE
。
第一种方式太耗时,因为有很多块,
我经常重写/重建小插图。
第二种方式对我来说更好。但可能有更好的模式如何支持这样的小插曲?例如,在软件包的测试中,我使用testthat::skip_on_cran()
来避免CRAN检查。
答案 0 :(得分:2)
最简单的方法就是将数据包含在您的包中。要么设置虚拟数据:
data
目录。这将允许用户轻松访问它。 inst/extdata
。用户可以访问此文件,但它更隐蔽。您可以使用system.file(package="my_pkg")
在小插图中你会有一些东西
```{r, echo=FALSE}
data(example_data, package="my_pkg")
my_data = example_data
```
```{r, eval = FALSE}
# set user_name and password from user's configuration file
set_connection(file = "/home/user001/connection.config")
# ask data base for all metrics it has
my_data <- get_all_metrics()
```
答案 1 :(得分:1)
deleted = 0
只检查系统变量
testthat::skip_on_cran
根据我的收集,这是由> testthat::skip_on_cran
function ()
{
if (identical(Sys.getenv("NOT_CRAN"), "true")) {
return(invisible(TRUE))
}
skip("On CRAN")
}
<environment: namespace:testthat>
或testthat
设置的。因此,您可以使用
devtools
在chunk选项中并在其中一个第一个块中加载eval = identical(Sys.getenv("NOT_CRAN"), "true")
或testthat
。否则,您可以在站点上使用类似的机制并分配类似的系统变量并检查它是否为devtools
。例如,使用"true"
)。如果您使用R studio或Sys.setenv("IS_MY_COMP", "true")
文件,请在Sys.setenv
文件中添加.Rprofile
电话。有关后一选项的信息,请参阅R_HOME/Rprofile.site
。
或者,您可以使用
检查help("Startup")
是否存在
"/home/user001/connection.config"
在块选项中。