如何创建一个R包

--杀杀
喜欢用R写代码的同学应该天天在用各种R包,大家多少好奇过R包是怎么创建的,怎样能把一些自己设计的功能封装到R包里,方便以后使用~

这篇简书想分享一下如何创建一个最基础的R包,这只需要很短的时间就可以完成,但是更加高阶的功能或者功能复杂的R包就需要以后进一步研究啦!

首先你需要确定你的R包要实现什么功能,并先把这个功能写成一个函数。我今天举例的这个R包是根据我的一个小需求:我需要把一个比较大的矩阵按列拆分开来,并且给每一列都加上原矩阵的行名,然后批量写出成文件,文件名对应原矩阵的列名。原矩阵有几列,最后就会被拆分成几份文件。功能很简单,主要是借此学习如何创建R包。

首先我把我的需求写成函数:

writefiles <- function(matrix_w,type)
{
  file_list <- colnames(matrix_w)
  files <- paste(file_list,".",type,sep="")
  for (i in 1:(dim(matrix_w)[2]))
  {
    temp <- cbind(as.matrix(rownames(matrix_w)),as.matrix(matrix_w[,i]))
    if(type == "txt")
    {write.table(temp,file=files[i],col.names = F,row.names = F,quote = F,sep = "\t")}
    if(type == "csv")
    {write.table(temp,file=files[i],col.names = F,row.names = F,quote = F,sep = ",")}
  }
}

至少要确定你的函数是没有语法错误的

接下来就开始准备R包
首先需要安装Rtools
https://cran.r-project.org/bin/windows/Rtools/

打开RStudio,file - new project - new directory - R package

给你的包取名字,然后创建好存放你的R包的文件夹,并填写

可以勾选use renv with this project,会创建更多可能用的文件,比如说上传github需要的文件,点击create project

R会在你规定的路径下创建这些文件,但我们只需要使用其中的一部分

接下来加载俩包

library(devtools)
library(roxygen2)

附上装包代码嘻嘻

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("devtools") 

接下来,我们需要编辑一些文件,首先是descripetion文件,我们可以直接从RStudio右下角的files里双击打开

接下来进行编辑
需要修改的就是package名字,title,author,description,其他我都没有修改,改完点保存就kk
接下来,就需要创建你的R包里最重要的函数了

同样在RStudio的右下角里双击进入R文件夹,里面已经有一个hello.R文件,不用管它,我们可以file - new file - R script来新建一个.R文件,然后把你的函数代码粘贴进去,保存,关闭

还没结束,我们需要对我们的代码写一些注释信息,在RStudio中使用Ctrl+Shift+Alt+R的快捷键(光标放在你刚刚创建的.R文件上),会自动帮你在原文件中生成一些注释信息

可以看到,第一行修改为你的函数名字,第二行是描述,@param后面是你的function中涉及到的参数,你需要对这些参数做一些描述或解释,接下来就是一个example,这个example必须是可以使用你的内置函数运行成功的。因为后面在check的时候,系统是会运行你的example的,如果不成会报错。

接下来运行代码,记住每次更新了你的.R文件后,都要运行这个代码更新.Rd文件

devtools::document()

让R在man文件夹中自动生成对应的.Rd文件
接下来执行检查

check()

检查需要几分钟时间,然后会显示检查结果

warning和notes都问题不大,主要看有没有errors,一般问题都出在函数的bug上,跟着系统的提示修改bug就可以了。我在创建包时报了一个错,说我包中涉及到的write.table函数是需要依赖的,我根据系统的提示,在NAMESPACE文件夹中加了一句
就没有再报错了。查完bug,没有error的话,点击Build - Build source package,R会自动帮你生成这个包,并加载这个包,你就可以用自己的数据考察一下自己的包好不好用啦。同时,你的文件夹下也会生成一个tar.gz的压缩包文件,这就跟平时我们从网上下载的R包是一样的。

如果之前你写.R文件写的没问题的话,使用 ?你的函数名 就可以调出帮助文档,就像平时我们使用别的R包有疑惑时一样。

参考:
https://www.bioinfo-scrounger.com/archives/546/
https://blog.csdn.net/nixiang_888/article/details/114299150

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。