• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    同等学历教学

    同等学历教学

    免费
    阅读更多
  • 特色
    • 展示
    • 关于我们
    • 问答
  • 事件
  • 个性化
  • 博客
  • 联系
  • 站点资源
    有任何问题吗?
    (00) 123 456 789
    weinfoadmin@weinformatics.cn
    注册登录
    恒诺新知
    • 主页
    • 课程

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      同等学历教学

      同等学历教学

      免费
      阅读更多
    • 特色
      • 展示
      • 关于我们
      • 问答
    • 事件
    • 个性化
    • 博客
    • 联系
    • 站点资源

      生信星球

      • 首页
      • 博客
      • 生信星球
      • R包的精华都在这个目录下

      R包的精华都在这个目录下

      • 发布者 weinfoeditor
      • 分类 生信星球
      • 日期 2019年10月21日
      测试开头


       今天是生信星球陪你的第473天


         大神一句话,菜鸟跑半年。我不是大神,但我可以缩短你走弯路的半年~

         就像歌儿唱的那样,如果你不知道该往哪儿走,就留在这学点生信好不好~

         这里有豆豆和花花的学习历程,从新手到进阶,生信路上有你有我!

      花花写于2019-10-21

      这个10月不一般,考过了科三,办了护照,学会了剪视频、剪音乐,ppt又有了一些新收获,也写出了最简单版本的R包,还将于11月推出新的GEO数据库挖掘课程,就是这么紧锣密鼓。

      言归正传,看一下前情回顾了:

      我要学R包开发了,一起吗

      我写了一个最简单的R包,你学吗

      《R包开发》这本书的第三章,讲的是R/这个目录,是关于R包所必须知道的最少知识,都是精华!

      使用包的第一个原则是,所有的 R 代码都要放在 R/ 中。

      1.R 代码的工作流程

      • (1) 编辑一个 R 文件。

      • (2) 按 Ctrl/Cmd+Shift+L(或运行 devtools::load_ all())。

      • (3) 在控制台中浏览代码。

      • (4) 修改代码,重复上面的过程。

      ❗️对于这个看起来灰常简单的流程,哈德雷蜀黍是这样说的:

      即使你从本书中没有学到任何其他的东西,也已经了解了编辑和重新加载 R 代码的一个有用的工作流程。

      2.组织函数

      ❌不要让每个函数占一个脚本。
      ❌不要把所有函数放进一个脚本。
      ❌永远不要使用只有大小写不同的文件名。

      3.代码风格

      • 谢益辉的 formatR 包可以一键清理代码。formatR::tidy_dir("R")

      • Jim Hester 的 lintr 包检查代码是否符合风格指南,当它发现你忽略 了什么时会给出提示,有些提示是可以忽略的。lintr::lint_package()

      (1)函数名

      下划线分割,避免使用现有的变量名和函数名。

      (2)空格

      除了冒号外的运算符号前后使用空格;
      逗号后面加空格;
      左括号前使用空格,但在函数调用中除外

      (3)花括号

      右花括号单独占一行,除非后面跟 else

      (4)行代码长度

      每行代码限定在 80 个字符内

      (5)缩进

      使用两个空格缩进,不要使用 Tab 或混用 Tab 和空格。

      (6)赋值

      在赋值表达式中使用 <- , 不用=

      (7)注释

      注释以井号开头,解释为什么,而非是什么。使用 – 和 = 把文件分割成容易阅读的代码块。

      4.顶层代码

      (1)加载代码

      用source加载脚本中的函数,代码会立即执行,且结果立即可用;
      而R包中的函数,则是编译时运行, 加载(library)后结果才可用。
      因此:

      包的代码只能创建对象,主要是函数

      (2)R 运行环境

      永远不要用一些修改全局设置的函数。

      • 不要用 library() 􏰄 require(),而是用 DESCRIPTION 来指定包的依赖包。

      • 不要使用 source() 从文件加载代码。
        source() 将代码执行的结果添加到当前环境,因此会修改当前环境。可以使用devtools::load_all(),它会自动 source R/ 目录下所有的文件.

      • 如果你修改全局的 options() 或图形的 par(),先把旧的设置保存下来,然后在你用完 之后恢复到原来的值:

       old <- options(stringsAsFactors = FALSE)
              on.exit(options(old), add = TRUE)
      • 需要作图和输出结果到控制台时,把输出功能做成独立的函数。

      • 避免依赖用户的运行环境。

      (3)何时需要副作用

      (副作用这个词听起来有点别扭,可是我查了,这个翻译是对的。)
      使用.onLoad()函数,其常见用法有:

      • 在包加载时显示一些信息,也就是说library出现的提示信息就是从这里来的!

      • 用 options() 来为你的包设置自定义选项。
        在devtools里面,是这样写的:

      .onLoad <- function(libname, pkgname) {
               op <- options()
               op.devtools <- list(
                 devtools.path = "~/R-dev",
                 devtools.install.args = "",
                 devtools.name = "Your name goes here",
                 devtools.desc.author = 'person("First", "Last",
                    "first.last@example.com", role = c("aut", "cre"))'

                  devtools.desc.license = "What license is it under?",
                  devtools.desc.suggests = NULL,
                  devtools.desc = list()
                )
                toset <- !(names(op.devtools) %in% names(op))
                if(any(toset)) options(op.devtools[toset])
                invisible()
              }
      • 把 R 连接到另一种编程语言。
        (太难不看系列)

      • 使用 tools::vignetteEngine(),注册一个使用指南生成引擎。

      如果用了 .onLoad(),记得用 .onUnload() 来清理副作用。

      (4)S4 类、泛型和方法

      (太难不看)

      5.CRAN 注记

      提交到CRAN的要求:

      只能使用 ASCII 字符.
      Unicode 字符需要转义转义:stringi::stri_escape_unicode()

      x <- "This is a bullet •"
      y <- "This is a bullet u2022"
      identical(x, y)
      #> [1] TRUE
      cat(stringi::stri_escape_unicode(x))
      #> This is a bullet u2022

      洲更写的R包binmarp今天被CRAN收录了,于是我就有了新的小目标。

      这种感觉就像你正在爬山不知道正确的方向在哪,刚好半山腰有个好心人朝你闪了一下手电筒,那叫一个干劲十足~
      等我写的包也被收录的时候,我就回来数一下距离今天过去了多久。

      插我们公众号唯一一个小广告!

      生信零基础入门学习小组长期报名中

      再给生信技能树打个call!

      GEO数据挖掘广州专场课程

      全国巡讲第19-20站(福州和上海线下培训)

      全球公益巡讲、招学徒



      测试结尾

      请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!

      • 分享:
      作者头像
      weinfoeditor

      上一篇文章

      R-不同数据集画出的热图,用同样的颜色区间上色?
      2019年10月21日

      下一篇文章

      R-iheatmapr包制作交互式热图
      2019年10月22日

      你可能也喜欢

      8-1651673488
      生信零基础入门学习小组长期报名中(2022仍继续)
      7 4月, 2022
      2-1651673738
      简化版的ROC曲线
      21 2月, 2022
      8-1651674718
      支持向量机模型
      19 11月, 2021

      搜索

      分类

      • R语言
      • TCGA数据挖掘
      • 单细胞RNA-seq测序
      • 在线会议直播预告与回放
      • 数据分析那些事儿分类
      • 未分类
      • 生信星球
      • 老俊俊的生信笔记

      投稿培训

      免费

      alphafold2培训

      免费

      群晖配置培训

      免费

      最新博文

      白介素-17受体信号的自主激活,维持炎症并促进疾病进展
      048月2023
      MCT4依赖的乳酸分泌抑制LKB1缺陷肺腺癌的抗肿瘤免疫
      187月2023
      Nature | 单细胞技术揭示衰老细胞与肌肉再生
      301月2023
      logo-eduma-the-best-lms-wordpress-theme

      (00) 123 456 789

      weinfoadmin@weinformatics.cn

      恒诺新知

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      链接

      • 课程
      • 事件
      • 展示
      • 问答

      支持

      • 文档
      • 论坛
      • 语言包
      • 发行状态

      推荐

      • iHub汉语代码托管
      • iLAB耗材管理
      • WooCommerce
      • 丁香园论坛

      weinformatics 即 恒诺新知。ICP备案号:粤ICP备19129767号

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      要成为一名讲师吗?

      加入数以千计的演讲者获得100%课时费!

      现在开始

      用你的站点账户登录

      忘记密码?

      还不是会员? 现在注册

      注册新帐户

      已经拥有注册账户? 现在登录

      close
      会员购买 你还没有登录,请先登录
      • ¥99 VIP-1个月
      • ¥199 VIP-半年
      • ¥299 VIP-1年
      在线支付 激活码

      立即支付
      支付宝
      微信支付
      请使用 支付宝 或 微信 扫码支付
      登录
      注册|忘记密码?