我有以下包结构:
mypackage/
|-- .Rbuildignore
|-- .gitignore
|-- DESCRIPTION
|-- NAMESPACE
|-- inst
|-- extdata
|-- mydata.csv
|-- vignettes
|-- R
|-- utils.R
`-- mypackage.Rproj
目前我将所有功能存储在R/
目录中。我的问题是
我应该在哪里放置脚本(例如名为try_functions.R
)来尝试存储在R /中的函数,即脚本。它还使用存储在inst/extdata/
在使用RStudio的开发过程中,我们在R/
中添加和修复功能后,工作流程就像更新和试用包那样。
答案 0 :(得分:1)
听起来像testthat
就是你正在寻找的包裹。通过“尝试”,我认为你的意思是“测试”,并且testthat
包规范的方式是在包的tests/testthat
目录内。
哈德利的“高级R”一书有关于最佳实践的很多优点more information,你可以通过查看github找到许多好的例子。
文档中的一些摘录:
测试是软件包开发的重要组成部分。它确保你的 代码完成了你想要它做的事情。然而,测试增加了额外的 进入您的开发工作流程。本章的目标是展示 你如何通过正式的方式使这项任务更容易,更有效 使用testthat包进行自动化测试。
并实施:
要设置程序包以使用testthat,请运行:
devtools::use_testthat()
这将:
创建一个tests / testthat目录。
将测试添加到DESCRIPTION中的Suggests字段。
- 醇>
创建一个文件tests / testthat.R,它在R CMD时运行所有测试 检查运行。 (您将在自动检查中了解更多相关信息。)
您也可以查看rprojroot
包以引用包目录中的各个位置。
答案 1 :(得分:0)
保留任意R脚本的规范位置是inst/
子目录。
请注意,在测试程序包功能时,最好将其放在tests/
子目录中。非测试(至少对程序包进行测试)的宽松脚本应放在inst/
中。这些可以是用于检查部署环境的测试脚本,用于检查生产数据质量的测试,可以插入crontab的exec脚本,无论是什么使您的程序包付诸实践。
引用Writing R Extensions手册“包子目录” :
inst
子目录的内容将递归复制到安装目录。inst
的子目录不应干扰R使用的子目录(当前为R
,data
,demo
,exec
,libs
,{{ 1}},man
,help
和html
,以及更早的版本使用Meta
,latex
)。R-ex
的复制是在构建inst
之后进行的,因此其Makefile可以创建要安装的文件。要排除安装文件,可以在顶级源目录的文件src
中指定排除模式列表。这些模式应为类似于Perl的正则表达式(有关详细信息,请参见R中的regexp帮助),每行一个,以不区分大小写的方式与文件和目录路径进行匹配,例如.Rinstignore
将根据扩展名排除doc/.*[.]png$
中的所有PNG文件。