提交自己开发的R包到CRAN或Bioconductor

2023年02月09日

Note:要在包里加入新的data,就必须同名,在R里的名字要和文件名一模一样,否则会报错。(Error: ‘mouse.house.keeping.gene’ is not an exported object from ‘namespace:bt2m’)

2023年01月17日

namespace文件里的标点符号要特别注意,逗号句号。

主函数里面的函数头描述非常重要,不要重复。

一旦框架搭起来了,后面开发就简单了。

在notebook里做分析,可视化,然后把代码打包起来,有一个基本的函数就可以了;

函数的调试有点复杂,那么可以直接去壳运行(API赋值),直接查看每一步的结果是否符合预期,不符合就不断debug调试;

复杂一点的函数非常有必要画一个算法流程图,明确每一步都是在干啥;

上面的命令第一步就是检车包、生成文档,第二步就是生成pdf。

这个才是完成的编译包的命令。

需要clean包里的内容

  • notebook
  • bt2m.pdf

check之后必须解决所有warnings才能build。

常见有如下几种warnings

Namespaces in Imports field not imported from:

This message appears when you include a package in the Imports: field in DESCRIPTION file and no function in this namespace is called by any function of the package. In this case, it means that in the R code of the package there was no call like tydir::fun, where fun represents any function of that package.

To solve it, simply delete the reference to the package in Imports: field within DESCRIPTION file. This was fixed in this commit for the package involved in the question: clustRcompaR.

Undocumented arguments in documentation object

去修改指定函数的document就行

Files not of a type allowed in a ‘data’ directory:

删掉无关文件

Note: significantly better compression could be obtained

压缩rda

2023年01月11日

整体流程就是:
1. 从空包开始,添加函数、数据,确保包能被devtools正常编译安装;
2. 自动构建document,生成GitHub page;
3. 不断调试优化,添加新功能;

在DFCI二次启动,又有了一些新的想法,iterbi换个马甲,bt2m这个名字更加经典。

重新配置基本的开发环境,R studio和R,Mac上就不要用conda了,因为搞不了什么大数据分析,容易紊乱。【不要让两个R kernel共享一个libPath,会corrupt】

直接用conda里的R的开发环境,不要用Rstudio,除非万不得已。

基本的devtools,生成PDF时需要用MacTeX,在Mac上安装一下。【那Linux就没法生成了?】需要一些依赖包。

走了很多弯路,最后这个解决了,字体的原因。【不要用MacPort,Mac就用Brew】

以及自己包所依赖的一些包,建议不要依赖太复杂的包,容易安装失败,然后用户就直接退出了。

用pkgdown来开发R包的网站,非常方便。

做生信的最终梦想,就是自己开发一款热度极高的R包,在历史上留下一笔。

  1. 取个R包名,这个后面就不要改了;

  2. 用Rstudio来创建和管理R包;

  3. 链接到GitHub备份【推荐GitHub desktop】;

R里面的独立脚本

  • data.R
  • visualization.R
  • bifurcated_clustering.R
  • differential_expression.R

加入新的功能文件夹

  • data
  • inst
  • vignettes

  • 在本地测试开发R代码,函数名、变量名取好一点,然后就可以导入到包的R文件夹里了;

这是最主要的步骤,需要耐心设计,基本包含了包的全部功能。

  • 最开始,随便哪一个开发数据集,在jupyter里以数据分析的形式开始开发,能分析出自己满意的结果未知;
  • 然后,模块化,按核心功能,把代码封装成函数,设置好参数和输出结果;
  • 接着,重命名关键变量和函数,将函数导入到R package里开始以source的方式调试;
  • 然后,在函数上面写doc,这个比较简单;
  • 最后,在GitHub发布R包,安装后,最少用5种不同的数据集测试代码,发现bug,然后debug,循环几次就差不多了。

函数命名法则

  • 驼峰命名法,首字母大写,单词间不要间隔,以后每个单词首字母大写
  • “.”用于结尾,表示多态性
  • 名字不太太长,否则很丑,名字多是动词短语或名词
  • 用sublime批量修改比较方便

变量命名

  • 变量统一小写
  • 变量用”.”分割

包的设置

DESCRIPTION文件

主要是import package、author的格式

gitdoc自动生成文档

每次运行之前记得备份namespace文件,会自动覆盖。

测试【check之前必须移除无关的文件,比如pdf,教程文档等】

其实写个包还是挺难的,有太多注意事项了。

很多事情都要不断的打磨:

  • 泛化,随着测试数据集的变化,总有不同的condition,就需要不断的泛化
  • 命名,根据对分析理解的加深,会有新的命名方法

删掉所有注释再提交到GitHub

设计原则

如何提交到Bioconductor?

文章发表

如果真想做一个好包,那就把开发的逻辑梳理清楚,然后投稿,差不多接收了就可以把包提交到bioconductor。

一些报错

Error in get(genname, envir = envir) : object ‘testthat_print’ not found

rlang is a collection of frameworks and APIs for programming with R.

Update testthat to 3.0.0 or newer.

Dependence on R version ‘3.6.2’ not with patchlevel 0

CRAN check warning: Dependence on R version ‘3.4.3’ not with patchlevel 0 【不要到补丁号】
roxygen2 generate namespace【自动生产新定义的函数,在namespace文件里自动export一下】
Namespace dependencies not required 【所有在namespace里import的都要在description里import】
Error: object ‘str_wrap’ is not exported by ‘namespace:ggplot2’ 【搞错了】
Undefined global functions or variables 【dataframe等的列名,需要加入global】

【description里面一个要句号,一个不能有句号,要求很严格】

Malformed Title field: should not end in a period.

Malformed Description field: should contain one or more complete sentences.

参考:

Original: https://www.cnblogs.com/leezx/p/16111833.html
Author: Life·Intelligence
Title: 提交自己开发的R包到CRAN或Bioconductor

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/552403/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 免费SVN空间

    推荐免费的svn空间(SVN代码托管) 最近研究了国内和国外的免费svn空间,SVN代码托管,SVN在线,代码托管中心,有所心得。 http://www.svn999.com/ […

    技术杂谈 2023年5月31日
    082
  • 5.1SpringBoot整合Kafka(工具安装Kafka+Tools)

    1.工具安装Kafka 上一期我分享了安装zk,下一次我们把Kafka和可视化工具一起搞起来。 注意:这个时候ZK一定要启动成功。zk安装地址:https://www.cnblog…

    技术杂谈 2023年7月24日
    063
  • 「猪齿鱼」助力汉得信息智能制造集中交付高效协同

    导语 IT咨询行业面临着人天单价难以提高,而员工待遇和营运成本持续提升的压力,这大大压缩了咨询公司的利润空间,逼迫着咨询公司要想办法提高项目的交付效率,进行业务模式的变革。采用远程…

    技术杂谈 2023年7月24日
    0102
  • DateTimeFormatter.BASIC_ISO_DATE

    DateTimeFormatter (Java Platform SE 8 ) (oracle.com) 作者:习惯沉淀 如果文中有误或对本文有不同的见解,欢迎在评论区留言。 如果…

    技术杂谈 2023年6月1日
    083
  • 架肩与拐肘

    内家拳大多讲究沉肩坠肘,太极拳也是,沉肩坠肘是费时功夫,成年人必须花一定的时间专门去纠正。沉肩坠肘解决不了,上肢的实战只能靠蛮力。 沉肩功夫出不来的人,力从地起的劲力很难直接自然性…

    技术杂谈 2023年5月31日
    086
  • PyQt5 窗口事件

    ################################ PyQt5中文网 – PyQt5全套视频教程 # https://www.PyQt5.cn/ # 主讲: 村长 #…

    技术杂谈 2023年5月31日
    075
  • CopyOnWriteArrayList与CopyOnWriteArraySet详解

    什么是CopyOnWrite容器 【1】CopyOnWrite容器是基于并发模式Copy-on-Write模式(最简单的并发解决方案)实现的用于避免共享的数据集合。 【2】Copy…

    技术杂谈 2023年7月24日
    062
  • Linux Accounting(中文翻译)(2):Delay Accounting

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    技术杂谈 2023年7月11日
    064
  • 技术漫谈之——Jectpack Compose

    最近Jetpack Compose发布了Beta版本,抽时间了解了一下Compose带来的改变和其中的一些原理。本文不会讲解具体API,只是比较随意的分享自己的一些疑问以及在探寻答…

    技术杂谈 2023年7月11日
    044
  • 华为OpenEnler Linux系统部署LNMP

    LNMP是Linux+Nginx+Mysql+PHP所构建的一个动态开发环镜 我这里使用的系统是华为的OpenEnler系统,使用了Nginx1.12版本、Mysql8和PHP7….

    技术杂谈 2023年6月21日
    088
  • 从决策辅助者到决策制定者 — CHRO新角色

    CEO都知道:公司的成功仰赖人力资源。创造价值的不是企业,而是人才。但若对绝大多数公司抽丝剥茧仔细分析,你会发现,CEO通常与首席人力资源官(CHRO)和人力资源部门(HR)关系疏…

    技术杂谈 2023年5月31日
    062
  • 一文总结高并发大数据量下MySQL开发规范【军规】

    在互联网公司中,MySQL是使用最多的数据库,那么在并发量大、数据量大的互联网业务中,如果高效的使用MySQL才能保证服务的稳定呢?根据本人多年运维管理经验的总结,梳理了一些核心的…

    技术杂谈 2023年7月25日
    084
  • Array.prototype.reduce()

    Array.prototype.reduce() reduce() 方法对数组中的每个元素按序执行一个由您提供的 reducer 函数,每一次运行 reducer 会将先前元素的计…

    技术杂谈 2023年6月1日
    080
  • 初等数论学习笔记 I:同余相关

    2021.12.6:重构文章,删去线性筛部分,修改部分表述。 2022.3.15:重构文章。 2022.3.24:新增威尔逊定理,素数在阶乘和组合数中的幂次,阶与原根,高次剩余和卢…

    技术杂谈 2023年6月21日
    084
  • 什么是CLI?

    命令行界面(英语:command-line interface,缩写]:CLI)是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接…

    技术杂谈 2023年5月31日
    081
  • 再也不用担心重装VSCode了

    1. 关于Settings Sync插件 Setings Sync插件可以同步你的VSCode配置到 Github Gist,当你更换电脑重新搭建VSCode环境的时候,直接使用该…

    技术杂谈 2023年7月23日
    064
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球