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

时间:2017-07-01 02:14:56

标签: r rstudio r-package

我有以下包结构:

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

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

中的数据

在使用RStudio的开发过程中,我们在R/中添加和修复功能后,工作流程就像更新和试用包那样。

2 个答案:

答案 0 :(得分:1)

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

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

文档中的一些摘录:

  

测试是软件包开发的重要组成部分。它确保你的   代码完成了你想要它做的事情。然而,测试增加了额外的   进入您的开发工作流程。本章的目标是展示   你如何通过正式的方式使这项任务更容易,更有效   使用testthat包进行自动化测试。

并实施:

  

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

     

devtools::use_testthat()

     

这将:

     
      
  1. 创建一个tests / testthat目录。

  2.   
  3. 将测试添加到DESCRIPTION中的Suggests字段。

  4.   
  5. 创建一个文件tests / testthat.R,它在R CMD时运行所有测试   检查运行。 (您将在自动检查中了解更多相关信息。)

  6.   

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

答案 1 :(得分:0)

保留任意R脚本的规范位置是inst/子目录。
请注意,在测试程序包功能时,最好将其放在tests/子目录中。非测试(至少对程序包进行测试)的宽松脚本应放在inst/中。这些可以是用于检查部署环境的测试脚本,用于检查生产数据质量的测试,可以插入crontab的exec脚本,无论是什么使您的程序包付诸实践。

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

  

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