--杀杀
喜欢用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/
给你的包取名字,然后创建好存放你的R包的文件夹,并填写
可以勾选use renv with this project,会创建更多可能用的文件,比如说上传github需要的文件,点击create projectR会在你规定的路径下创建这些文件,但我们只需要使用其中的一部分
接下来加载俩包
library(devtools)
library(roxygen2)
附上装包代码嘻嘻
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("devtools")
接下来,我们需要编辑一些文件,首先是descripetion文件,我们可以直接从RStudio右下角的files里双击打开接下来,就需要创建你的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()
检查需要几分钟时间,然后会显示检查结果参考:
https://www.bioinfo-scrounger.com/archives/546/
https://blog.csdn.net/nixiang_888/article/details/114299150