虽然一样的工具RUnit,svUnit以及testthat有利于开发包,我认为这将是非常有用的上传测试脚本或特定包装甚至只是用法示例的一些手段.持续集成(例如Jenkins)甚至基本单元测试的用户可能已经有过这样的测试,并且发现为包维护者的使用贡献脚本是有益的.
这些功能是通过CRAN还是RForge存在,还是通过其他站点(例如github)存在?如果是这样,是否有一个使用存储库的主要示例,例如github,以允许用户提供测试?
(感谢@mariotomo提醒我svUnit.)
我试图卸载包含所有依赖项的包.我遇到的问题是卸载依赖项的顺序.因为依赖项是递归的,所以它们只能在依赖关系树中从底部向上卸载.
在R中有一种简单或原生的方式来实现这一目标吗?我想要完成的第一步:
eval_current <- function(expr, envir=parent.frame(), timeout=60){
#set the timeout
setTimeLimit(elapsed=timeout, transient=TRUE);
#currently loaded packages
currentlyattached <- search();
currentlyloaded <- loadedNamespaces();
on.exit({
#reset time limit
setTimeLimit(cpu=Inf, elapsed=Inf, transient=FALSE);
#try to detach packages that were attached during eval
nowattached <- search();
todetach <- nowattached[!(nowattached %in% currentlyattached)];
for(i in seq_along(todetach)){
try(detach(todetach[i], unload=TRUE, character.only=TRUE, force=TRUE));
}
#try to unload packages that are still loaded
nowloaded <- loadedNamespaces();
tounload <- nowloaded[!(nowloaded %in% currentlyloaded)];
for(i in seq_along(tounload)){
try(unloadNamespace(tounload[i]));
}
});
eval(expr, envir)
}
Run Code Online (Sandbox Code Playgroud)
但它导致:
> …Run Code Online (Sandbox Code Playgroud) 我将接管CRAN上的R软件包的积极开发和维护(当然是在当前维护者的批准下).实现这一目标的必要步骤是什么/我们应该如下进行?:(我假设只有当前维护者有权提交包的更新版本,对吧?)
那会把我变成包的活跃维护者吗?
编辑:为了澄清,我目前不是包中列出的作者.
我无法在没有管理权限且无法访问互联网的Windows 7计算机上安装解压缩的软件包.我正在使用RGui(不是RStudio).
现在我有一个解压缩的库坐在目录中.不幸的是,当我尝试:
install.packages("C://path//to//directory",
repos = NULL,
lib = "C://path//to//newDirectory")
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Warning in `install.packages("C://path//to//directory",` :
'lib = "C://path//to//newDirectory"' is not writable
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为我对我试图存储包的位置有写权限.
当我收到此错误时,我也会从RGui获得一个弹出窗口:
Would you like to use a personal library instead?
Run Code Online (Sandbox Code Playgroud)
如果我点击Yes,它会抛出错误:
Error in `install.packages("C://path//to//directory",` :
type == "both" cannot be used with 'repos = NULL'
Run Code Online (Sandbox Code Playgroud)
我也无法安装devtools.有任何想法吗?
根据2.15 的发行说明:
通过环境变量选择的R CMD检查有更新的选项可以进行更严格的测试 - 请参阅"编写R扩展"手册.
从R中查找OS临时目录的跨平台方法是什么?我目前使用:
dirname(tempdir())
Run Code Online (Sandbox Code Playgroud)
在交互式R会话中,Ubuntu和Windows上的工作都做了.然而,当从RApache内部调用时它失败了.在RApache中,值tempdir()始终是/tmp,因此dirname(tempdir())导致/,这显然是错误的.我也尝试过:
Sys.getenv("TMP")
Sys.getenv("TEMP")
Sys.getenv("TMPDIR")
Run Code Online (Sandbox Code Playgroud)
正如所建议的那样,?"environment variables"但这些都没有在Ubuntu中设置.它似乎也没有在任何文件中设置,/etc/R/*所以我不太明白R如何检测到这个值.
我正在向CRAN提交一份包裹,我收到了审核小组的以下警告:
包具有VignetteBuilder字段,但没有预先构建的晕影索引.
事实上我在跑步时也看到过devtools::release().我正在使用上一个R版本,R version 3.3.1并具有以下.Rmd插图来源:
---
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{<my vignette title>}
%\VignetteEngine{knitr::knitr}
%\usepackage[utf8]{inputenc}
---
Run Code Online (Sandbox Code Playgroud)
此外,我已按默认方式包含knitr在DESCRIPTION文件中:
Suggests:
knitr
VignetteBuilder:
knitr
Run Code Online (Sandbox Code Playgroud)
我环顾四周,虽然问题似乎很常见,但我还是无法理解索引为什么不构建(以及如何强制构建它).
这个问题和其中的链接是谷歌的顶级结果,但没有解决问题.
我正在尝试为 R 中的包函数编写测试。
\n\n假设我们有一个函数,只需x使用以下命令将字符串写入磁盘writeLines():
exporting_function <- function(x, file) {\n\n writeLines(x, con = file)\n\n invisible(NULL)\n}\nRun Code Online (Sandbox Code Playgroud)\n\n测试它的一种方法是检查文件是否存在。通常,它一开始不应该存在,但在运行导出函数之后它应该存在。另外,您可能想测试文件大小是否大于 0:
\n\nlibrary(testthat)\n\ntest_that("file is written to disk", {\n file = \'output.txt\'\n expect_false(file.exists(file))\n\n exporting_function("This is a test",\n file = file)\n\n\n expect_true(file.exists(file))\n\n expect_gt(file.info(\'output.txt\')$size, 0)\n})\nRun Code Online (Sandbox Code Playgroud)\n\n这是一个很好的测试方法吗?在CRAN 存储库政策中,它指出Packages should not write in the user\xe2\x80\x99s home filespace (including clipboards), nor anywhere else on the file system apart from the R session\xe2\x80\x99s temporary directory. 这个测试会违反这个限制吗?
有一个expect_output_file函数。从文档和示例中,我不确定这是否是测试该功能的更合适的期望。它需要一个object参数,该参数应该是 …
我创建了一个 R 包,每当我将更改合并到 master 分支时,我想通过 GitHub Actions 将其上传到 CRAN。我发现了很多R 操作的示例,我什至查找了一些最流行的软件包(如 dplyr)是如何做到这一点的,尽管我找到了一个devtools::release()辅助函数,但我仍然没有看到一个工作流程可以当您将更改合并到主分支时,将库提交到 CRAN。软件包开发人员是否手动执行此操作?有什么原因导致这没有自动化吗?
我正在开发一个要上传到 CRAN 的 R 包,并且在运行时不断收到注释
devtools::check_rhub()
Run Code Online (Sandbox Code Playgroud)
我得到的结果是:
> On fedora-clang-devel (r-devel)
checking HTML version of manual . . . NOTE
Skippping checking HTML validation: no command 'tidy' found
Run Code Online (Sandbox Code Playgroud)
我一直在尝试修复它,但我不确定问题出在哪里......而且,它在 Windows 和 Ubuntu 上运行良好。
有谁知道我应该做什么?或者CRAN有可能会忽略这个注释吗?
提前致谢。
我尝试通过检查我拥有的任何 HTML 代码来修复它,但删除了它们。
我尝试将 macOS 上的 HTML Tidy 更新到最新版本,但也没有任何变化。
我希望弄清楚如何解决这个问题。