你好。我莎朗马克利斯在IDG通信,这里多做有R插曲22:写你自己的R包。
当你听到“R包,”你可能会认为东西与其他人共享。但是的R包也可以是一个很好的方式来组织自己的工作只是为自己。尤其是你的未来的自己。R程序包为您提供一致的结构,所以你重构代码到功能。而且,也许更重要的是,以一致的方式来记录这些功能每一个。所以,明年有更好的机会,你会记得你的代码的部分做什么。
让我们开始吧。
首先,你要设置你的系统。为了便于包装的发展,我建议要确保你有这些库安装在系统上:devtools,usethis,roxygen2,testthat,knitr和rmarkdown。
你可能需要多一点的系统设置为好。在Windows上,安装软件称为Rtools。这实际上是一个软件应用程序,而不是的R包。你应该能够找到它的任何CRAN镜,或谷歌Rtools。而在Mac上,这将有助于从App Store获得的XCode。
如果你不知道你的系统是否已准备好写的包,devtools有一个函数调用has_devel()来检查,如果你的软件包的开发环境是OK。所以,不要跑,你已经有了后安装的devtools。
接下来,您可以转到文件>新建项目>新建目录,然后选择[R包创建RStudio一个新包。
然后我问了包的名字,我是否要创建一个Git仓库(我通常做),并使用packrat(我通常不)。
让我们看看会发生什么。
如果你看一下在底部右侧面板中,你会看到一些文件和2根目录中创建。我们可以忽略的.gitignore和.Rbuildignore文件现在 - 一个是我的混帐回购协议;另一种是列出本地文件,我不希望在最终方案时,我建立它。
将R子目录是所有我的[R脚本需要现场。该名男子文件夹是文件 - 具体而言,功能的帮助文件。您将看到RStudio产生的样本“你好” R脚本。
也有在主目录中的几个重要的文件。我没有足够的时间去到名字空间,但devtools和usethis应该照顾的是我们。
说明有关于包的一些重要的要求的元数据,所以我们需要填补的。这主要是容易的事情,如包名称,作者,描述,许可证。这也是在那里软件包的依赖去。幸运的是,usethis包负责的正确格式的为您服务。说我需要lubridate和dplyr包我的包。我可以运行use_package()添加的依赖性。首先,我将载入我的图书馆。然后,我会运行use_package()与说明文件打开控制台,所以你可以看到发生了什么。
你看,设置了正确的说明包的依赖。
接下来,我会写我的包的R功能。更具体地讲,我将使用一个,我对堆栈溢出发现,由哥伦比亚大学助理教授詹姆斯·柯利,获得一周的任何一天的最近日期。它回答的问题,如:“什么是最近周一的日期”
这是一个有点很难知道“一天”的输入参数应该是什么,但。这就是我的文档会在。一个简单的方法来写包文档是Roxygen。如果我把我的光标在任何地方的功能定义和选择RStudio菜单选项代码>插入Roxygen骨架
这给了我一些脚手架来记录我的功能在某种程度上是R理解。标题是非常自我解释。我还可以使用第二行的描述。没有为每个函数参数的一个@param线。这其中,你记录哪些数据类型的说法应该是,给一点点描述的。@返回表示返回什么类型的对象。@examples不是必需的,但您可能需要举一个例子或删除默认@examples。
为了节省您不必看我键入这一切,我会从我早已准备好的文件复制它。
见我举了一个例子在这里
要打开这个脚手架成R包帮助文件,运行devtools文件()函数。
现在,如果我看在男人的目录,我已经得到了功能的降价帮助文件(以及另外一个默认Hello功能)。
如果你想解决该命名空间的警告,只是删除默认的命名空间文件RStudio创建并运行文件()一次。
现在,我可以建立一个使用RStudio构建标签我的包。安装和重新启动选项是当你在你的代码工作的中间好。如果你想建立它的共享,包括获取源文件或二进制文件,这些选项都在更多下拉。
。
运行帮助,并且应该有新功能的帮助文件
如果你想要写一个包的小插曲,运行usethis包的use_vignette()函数来设置的。包括你想作为参数晕影的名字
和你有一个默认的小插曲,在那里我可以在标题和文字填写。
希望这的足以说服你这是很容易写一个简单的基本包。有万吨以上,你可以做,像testthat添加单元测试。哈德利韦翰对写作包,免费提供网上r-pkgs.had.co.nz一整本书。
这是一个有点过时了。珍妮布莱恩在RStudio正在与哈德利上的更新。您可以在r-pkgs.org去看了一下正在进行的工作。
这是它为这个情节,感谢收看!对于以上R提示,头向做多有R页面在HTTPS去点InfoWorld的点com削减更多的与R,除了R.您所有小写也可以找到做更多的在YouTube上播放列表[R。期待您的下一集!