如何编写R包

当您看到“ R包”时,您可能会想到“与他人共享的东西”。 但是的R包也可以是一个很好的方式来组织自己的工作只是为自己 。 尤其是您未来的自我。

R包为您提供了一致的结构,因此您更有可能将代码重构为函数。 而且,至少同样重要:软件包为您提供了一种一致的方式来记录每个功能。 因此,明年,您将有更大的机会记住代码的哪些部分做什么。

系统设置

首先,您要设置系统。 为了便于开发软件包,建议您确保已在系统上安装以下库:devtools,usethis,roxygen2,testthat,knitr和rmarkdown。

您可能还需要更多的系统设置。 在Windows中,安装名为Rtools的软件。 那实际上是一个软件应用程序,而不是R软件包。 在Mac上,从App Store获取Xcode很有帮助。

如果不确定系统是否已准备好编写软件包,则devtools具有一个名为has_devel()的函数,该函数检查软件包的开发环境是否正常。 我建议您在安装devtools之后运行它。

在RStudio中创建新软件包的对话框 Sharon Machlis / IDG

在RStudio中创建一个新包

接下来,您可以在RStudio中创建一个新包,方法是转到文件>新建项目>新建目录,然后选择R包。

系统会询问您一个包名称,以及是否要创建一个Git存储库(我通常这样做)并使用packrat(我通常不这样做)。

创建软件包后,在右下方的面板上,请注意已创建了一些文件和两个目录。

R子目录是我所有R脚本都需要存在的地方。 man文件夹用于提供文档-特别是功能帮助文件 。 RStudio还创建了一个示例hello.R R函数。

主目录中还有几个重要文件。 解释NAMESPACE本身可能只是一篇文章,但是初学者可以依靠devtools并使用此软件包来解决这一问题。

DESCRIPTION有一些关于软件包的重要必需元数据,因此您需要填写该元数据。 最简单的事情就是软件包名称,作者,描述和许可证。 这也是软件包依赖项的去向。

usethis软件包可以为您处理正确的软件包相关格式。 例如,如果您的软件包需要lubridate软件包,则可以将usethis与library(usethis)一起加载,然后运行use_package("lubridate")以添加依赖项。 您可以看到它如何自动将必要的文本添加到本文顶部嵌入的视频中的DESCRIPTION文件中(或通过在您自己的系统上运行类似的代码)。

编写和记录功能

接下来,像往常一样编写任何函数,并将其另存为R脚本到R目录中。 您可以为文件命名任何所需的名称,并且可以在文件中包含一个或多个函数。

Roxygen提供了一种向功能添加文档的简便方法。 将光标放在函数定义中的任何位置,然后选择RStudio菜单选项“代码”>“插入Roxygen骨架”。

这样可以使您以R理解的方式来记录功能,例如

#' Title
#'
#' @param day
#'
#' @return
#' @export
#'
#' @examples

“标题”字段很容易解释,您还可以添加一行以进行简短描述。 每个函数参数都有一个@param行(在此示例中,该函数有一个名为day参数), @return @examples@examples@param是您记录参数应为哪种数据类型的地方,并可以提供一些说明。 @return告诉您@return什么类型的对象。 @examples不是必需的,但是您需要提供一个示例或删除默认的@examples

要将这个脚手架变成R包帮助文件,请运行devtools::document()函数。

现在,如果您在man目录中查找,则应该有一个用于新功能的Markdown帮助文件(以及用于默认hello函数的另一个文件)。

RStudio的软件包构建选项卡 沙龙·马克斯(IDG)

RStudio的软件包构建选项卡

您可以使用“ RStudio生成”选项卡来生成软件包。 当您正在编写代码时,“安装并重新启动”选项非常有用。 如果要构建它以进行共享,包括获取源文件或二进制文件,请在“构建”选项卡中签出“更多”下拉列表。

运行help(package = "yourpackagename")以获取新功能的帮助文件。

如果要编写程序包小插图,请运行usethis程序包的use_vignette()函数进行设置。 包括您想要的小插图的名称作为参数,例如usethis::use_vignette("Intro") 。 您应该看到一个默认的小插图,您可以在其中填写小插图的标题和说明文字。

希望这足以说服您编写基本的R包很简单! 您还可以做更多的事情,例如使用testthat添加单元测试。

如果您想了解有关测试的更多信息,请查看我之前的“用R做更多事情 ”中的“ 使用testthat测试代码 ”。 Hadley Wickham拥有一整套有关编写软件包的书,可以从r-pkgs.had.co.nz免费在线获得 ,尽管现在已经有些过时了。 RStudio的Jenny Bryan正在与Wickham合作进行更新。 您可以在r-pkgs.org上看到一些正在进行的工作。

翻译自: https://www.infoworld.com/article/3346261/how-to-write-an-r-package.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值