如何编写自己的R包

信息世界|2019年3月5日,

当你听到“R package”的时候,你可能会想到一些和别人分享的东西。但R包也可以是组织自己工作的好方法

版权©2019Raybet2

嗨。我是IDG通信的Sharon Machlis,这里是《为R做更多》第22集:写你自己的R包。
当你听到“R package”的时候,你可能会想到一些和别人分享的东西。但是R包也是一个很好的方法来组织你自己的工作。尤其是你未来的自己。R包提供了一致的结构,因此可以将代码重构为函数。也许更重要的是,用一致的方式记录每一个函数。所以,明年你将有更好的机会记住你的代码的哪些部分做了什么。
让我们开始吧。
首先你要建立你的系统。对于简单的包开发,我建议您确保在您的系统上安装了这些库:devtools、usethis、roxygen2、testthat、knitr和rmarkdown。
您可能还需要更多的系统设置。在Windows上安装Rtools软件。这实际上是一个软件应用程序,而不是一个R包。你应该能够在任何CRAN镜子或谷歌Rtools上找到它。在Mac上,从App store获取XCode是很有帮助的。
如果您不确定您的系统是否已经准备好编写包,devtools有一个名为has_devel()的函数,它检查您的包开发环境是否正常。所以在安装了devtools之后,一定要运行它。
接下来,您可以在RStudio中创建一个新包,方法是转到文件> new Project > new Directory并选择R package。
然后我被询问包的名称,以及我是否想要创建一个git存储库(我通常这样做)并使用packrat(我通常不这样做)。
让我们看看发生了什么。
如果您查看右下角的面板,您将看到创建了几个文件和两个目录。现在我们可以忽略.gitignore和.Rbuildignore文件——其中一个是我的git repo文件;另一种方法是列出我在构建最终包时不想要的本地文件。
R子目录是我的所有R脚本需要存在的地方。man文件夹用于文档—特别是函数帮助文件。您可以看到RStudio生成了一个示例“hello”R脚本。
主目录中还有几个重要的文件。我没有足够的时间进入名称空间,但是devtools和usethis应该为我们解决这个问题。
DESCRIPTION中包含了一些关于包的重要元数据,因此我们需要填写这些数据。包名、作者、描述、许可等基本都很简单。这也是包依赖关系的发展方向。幸运的是,usethis包为您提供了适当的格式。说我的包需要lubridate和dplyr包。我可以运行use_package()来添加一个依赖项。首先,我将加载我的库。然后在控制台中运行use_package(),打开描述文件,这样您就可以看到发生了什么。
您会看到它设置了正确的描述包依赖项。
接下来,我将为我的包编写一个R函数。更具体地说,我将使用我在Stack Overflow上找到的一个,由哥伦比亚大学助理教授詹姆斯·柯利(James Curley)提供的,用来获取一周中任何一天的最新日期。它会回答这样的问题:“最近的周一是几号?”
不过,要知道“day”输入参数应该是什么有点困难。这就是我的文档的用武之地。编写包文档的一个简单方法是使用Roxygen。如果我将光标放在函数定义中的任何位置,并选择RStudio菜单选项代码>,则插入Roxygen骨架
这给了我一些脚手架,以R能理解的方式来记录我的函数。标题是不言自明的。我也可以用第二行来描述。每个函数参数都有一个@param行。在这里可以记录参数的数据类型,并给出一些描述。@return表示返回的对象的类型。@examples不是必需的,但是您需要提供一个示例或者删除默认的@examples。
为了省得你看我打字,我把它从一个我已经准备好的文件中拷贝出来。
我举个例子
要将这个脚手架转换成R包帮助文件,您需要运行devtools document()函数。
现在,如果我查看man目录,就会看到函数的Markdown帮助文件(以及默认的hello函数的另一个帮助文件)。
如果希望解决名称空间警告,只需删除RStudio创建的默认名称空间文件并再次运行document()。
现在我可以使用RStudio build选项卡构建我的包了。安装和重新启动选项适用于正在处理代码的情况。当您想要构建它以进行共享,包括获取源文件或二进制文件时,这些选项位于更多的下拉菜单中。
运行help,应该有一个新函数的帮助文件
如果希望编写包vignette,请运行usethis包的use_vignette()函数来设置它。将您想要的小插曲的名称包含为参数
你有一个默认的小插图,我可以在里面填充标题和文本。
希望这足以使您相信编写一个简单的基本包是相当容易的。您可以做的事情还有很多,比如使用testthat添加单元测试。Hadley Wickham有一本关于写作软件包的书,可以在r-pkgs.had.co.nz网站免费下载。
现在有点过时了。RStudio的珍妮·布莱恩正在和哈德利一起更新。你可以在r-pkgs.org上看到一些正在进行的工作。
这一集就到这里,感谢收看!想了解更多关于R的小技巧,你可以登录https go . infoworld . com网站上的“用R做更多”页面,除了R,其他字母都是小写的。你也可以在YouTube上找到“用R做更多”的播放列表。希望下一集再见!
受欢迎的
IDG.tv的特色视频