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