如何组织使用存储在R包的R /目录中的函数的R脚本

问题描述 投票:2回答:2

我有以下包结构:

mypackage/
|-- .Rbuildignore
|-- .gitignore
|-- DESCRIPTION
|-- NAMESPACE
|-- inst
  |-- extdata
    |-- mydata.csv
|-- vignettes
|-- R
  |-- utils.R
`-- mypackage.Rproj

目前我将所有函数存储在R/目录中。我的问题是我应该在哪里放置脚本(例如命名为try_functions.R)来尝试存储在R /中的函数,即脚本。它还使用存储在inst/extdata/中的数据

在使用RStudio的开发过程中,在R/中添加和修复函数之后,更新和尝试包的工作流程是什么。

r rstudio r-package
2个回答
1
投票

听起来像testthat是你正在寻找的包。通过“尝试”,我认为你的意思是“测试”,并且它为testthat包规范化的方式是在包的tests/testthat目录中。

哈德利的“高级R”一书有很多关于最佳实践的more information,你可以通过查看github找到许多好的例子。

一些文档的摘录:

测试是软件包开发的重要部分。它确保您的代码完成您希望它执行的操作。但是,测试为您的开发工作流程增加了一个额外的步骤。本章的目标是向您展示如何使用testthat包进行正式的自动化测试,使此任务更容易,更有效。

并实施:

要设置包以使用testthat,请运行:

devtools::use_testthat()

这将:

  1. 创建一个tests / testthat目录。
  2. 将测试添加到DESCRIPTION中的Suggests字段。
  3. 创建一个文件tests / testthat.R,在运行R CMD检查时运行所有测试。 (您将在自动检查中了解更多信息。)

您还可以查看rprojroot包以引用包目录中的各个位置。


0
投票

保留任意R脚本的规范位置是inst/子目录。 请注意,对包功能的测试最好放在tests/子目录中。非测试的松散脚本(至少测试你的包)应放在inst/中。这些可以是用于检查部署环境的测试脚本,用于检查生产数据质量的测试,用于插入crontab的exec脚本,以及将包执行的有用/必要的内容。

引用Writing R Extensions手册“Package子目录”:

inst子目录的内容将以递归方式复制到安装目录中。 inst的子目录不应该干扰R使用的那些(目前,RdatademoexeclibsmanhelphtmlMeta,早期版本使用latexR-ex)。在构建inst之后复制src,因此其Makefile可以创建要安装的文件。要排除安装文件,可以在顶级源目录中的文件.Rinstignore中指定排除模式列表。这些模式应该是类似于Perl的正则表达式(参见R中regexp的帮助以获得精确的详细信息),每行一个,与文件和目录路径不区分大小写,例如: doc/.*[.]png$将根据扩展名排除inst/doc中的所有PNG文件。

© www.soinside.com 2019 - 2024. All rights reserved.