我最近开发的一个R包被CRAN接收了,发布在:https://cran.rstudio.com/web/packages/chromseq/index.html
主要参考的文章:R package: https://r-pkgs.org/index.html
实际上是很简单的一个R包,可以实现分割含不同染色体序列的fasta文件,函数也不多,就5个,代码也不复杂。
写R包的初衷,可能还是自己一个比较大胆的想法吧,希望可以利用现有的工具做点东西出来。当时刚好参考了大神在公众号发布的文章:https://mp.weixin.qq.com/s/loKVJJPxGyRWYOF3pYDOdw
然后自己尝试用R写了一遍,发现没有想象中的那么简单(当然我自己水平有限,还没有能力一下子写高效的c),然后顺便写了几个可以用来处理fasta和list的相对通用的函数,最后整合在一起。
接下来谈谈我写这个包的经验:
先是对R包有个自动审核,一般是可以先用check
函数初步检查,没有问题再用check_rhub()
检查。注意:check
检查没有问题不代表真的没有问题,必须经过check_rhub()
检查没有问题才算。不然可能还会被CRAN检查出ERROR,像下面这样:
CRAN对于R包的自动审核尤其严格,一丁点错误都不能有!除了会严格检查你给函数写的example运行实例,还会检查一切你给函数、data写的文档,比如给data写的文档像下面这样:
#' Prices of 50,000 round cut diamonds.
#'
#' A dataset containing the prices and other attributes of almost 54,000
#' diamonds.
#'
#' @format A data frame with 53940 rows and 10 variables:
#' \describe{
#' \item{price}{price, in US dollars}
#' \item{carat}{weight of the diamond, in carats}
#' ...
#' }
#' @source \url{http://www.diamondse.info/}
"diamonds"
我建议像我一样的R包开发新手,可以先参考别人在Github上发布的R包的结构,心中有数,再跟着 https://r-pkgs.org/index.html里的步骤走一步看一步,前面的几章内容非常重要,中间的可以选择性看,最后的关于check和release最为重要,因为它决定了你的包的质量和成功发表的可能。
自动审核不通过永远是R包开发里面最痛苦的,我被拒了n多次:
文档都要写详细的引用和description,代码加注释,Git应用和Github管理,仔仔细细检查报错信息,一般代码写错都是error,没写文档就是warning。note相对轻微,可能只是拼写、格式上的问题,不过要发布到CRAN上最好尽可能去除一切note。
另外,自动审核是会对你的包在不同平台上进行测试的,如果在windows上没问题,在linux上、macOS上可能会有问题,比如文件路径里的分隔符,一定要避免直接出现在代码里。
虽然我这个R包非常简单,但至少实现了我从0到1的跨越,敢于尝试总是好的,希望大家都能根据自己的需求,开发出自己的R包,并能成功被CRAN接收。
接下来我考虑shiny的应用以及bionconductor上发布包的要求,继续做新的东西。