Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >「R」使用modules包来组织R的函数集合

「R」使用modules包来组织R的函数集合

作者头像
王诗翔呀
发布于 2021-09-03 04:12:15
发布于 2021-09-03 04:12:15
1.4K00
代码可运行
举报
文章被收录于专栏:优雅R优雅R
运行总次数:0
代码可运行

接触过Python的朋友肯定对模块很熟悉,R的代码组织方式以包为主。但基于文件的模块形式也是可以实现的,modules[1] 包提供了这种支持。

安装和使用

直接从CRAN下载即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1install.packages("modules")

使用了解2个函数的使用就可以了。

一是import(),用于替换library()加载包。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1> library(modules)
 2> gp = import('ggplot2')
 3Masking (modules:ggplot2):
 4  `Position` from: base
 5> args(gp$ggplot)
 6function (data = NULL, mapping = aes(), ..., environment = parent.frame()) 
 7NULL
 8> args(ggplot)
 9function (data = NULL, mapping = aes(), ..., environment = parent.frame()) 
10NULL

这样我们可以直接使用这个函数,也可以通过gp这个对象去访问可用的函数。

如果不想要在全局直接访问包内的函数,在导入时设定attach=FALSE

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1> dp <- import(dplyr, attach = FALSE)
 2Masking (modules:dplyr):
 3  `intersect` from: base
 4  `setdiff` from: base
 5  `setequal` from: base
 6  `union` from: base
 7> select
 8错误: 找不到对象'select'
 9> dp$select
10function (.data, ...) 
11{
12    UseMethod("select")
13}
14<bytecode: 0x7fe5671213f8>
15<environment: namespace:dplyr>

除了导入包,也可以导入具体的包的某个/些函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1> slt <- import(dplyr, select)
2Replacing attached import/use on search path for: modules:dplyr.
3> slt$select
4function (.data, ...) 
5{
6    UseMethod("select")
7}
8<bytecode: 0x7fe5671213f8>
9<environment: namespace:dplyr>

我看中的其实不是上面这些特性,而是它可以将文件里写好的函数整体加载为模块对象。

接下来介绍第二个函数。

use()将代码文件加载为模块

最近使用GitHub page的时候发现它的访问速度相当可观,哪怕GitHub主站点本身网络我们国内访问时好时坏。所以,如果我将代码文件放到GitHub上,国内任何的读者应该是可以快速地通过GitHub page访问到其内容。那么,利用GitHub page加上这里介绍的use()函数构建一个可实时获取的代码库是可能的。对于小的脚本函数, 写一个文件总是比写一个包简单轻量。

基于上面的思想,我将去年写的R包安装以及TCGA样本名重过滤等几个函数单独通过GitHub page进行了部署。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1> tcga <- modules::use("https://biosisyphus.github.io/Rlib/tcga.R")
2> tcga$filterReplicates(tsb = c("TCGA-55-7913-01B-11D-2237-01", "TCGA-55-7913-01B-11X-2237-01", "TCGA-55-7913-01B-11D-2237-01"))
3ooo Filter barcodes successfully!
4[1] "TCGA-55-7913-01B-11D-2237-01"

目前放置的几个代码文件都可以在代码库https://github.com/BioSisyphus/Rlib中查看。

这里一个对绝大部分读者有用的函数是install(),它之前被放在R包wfun中。我前几天把它重新进行了迁移和修改。该模块可以替换BiocManager::install()工作,可以从CRAN/BioC/GitHub/Gitee/目录等地方安装包。代码核心其实 就是各种情况的检查,优先使用适合的包和函数进行下载、安装。它的存在就是方便国内使用者,特别是 初学者简便地下载、安装包。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1install <- modules::use("https://biosisyphus.github.io/Rlib/install.R")
 2> install$install("tidyverse/ggplot2")
 3载入需要的名字空间:remotes
 4Required package remotes has been installed.
 5Installing from GitHub mirrors...
 6试开URL’https://codeload.github.com/tidyverse/ggplot2/zip/HEAD'
 7downloaded 3.3 MB
 8
 9载入需要的名字空间:pkgbuild
10Required package pkgbuild has been installed.
11✓  checking for file ‘/Volumes/Extra/R/Rtmp/RtmpobJHhN/filed328f28489/ggplot2-HEAD/DESCRIPTION...
12─  preparing ‘ggplot2’:
13✓  checking DESCRIPTION meta-information ...
14─  checking for LF line-endings in source and make files and shell scripts (412ms)
15─  checking for empty or unneeded directories
16─  building ‘ggplot2_3.3.5.9000.tar.gz’
17   
18将程序包安装入‘/Volumes/Extra/R/R_Library’
19(因为‘lib’没有被指定)
20Using library: /Volumes/Extra/R/R_Library
21Using temp directory: /Volumes/Extra/R/Rtmp/
22* installing *source* package ‘ggplot2’ ...
23** using staged installation
24** R
25** data
26*** moving datasets to lazyload DB
27** inst
28** byte-compile and prepare package for lazy loading
29Using library: /Volumes/Extra/R/R_Library
30Using temp directory: /Volumes/Extra/R/Rtmp/
31** help
32*** installing help indices
33*** copying figures
34** building package indices
35Using library: /Volumes/Extra/R/R_Library
36Using temp directory: /Volumes/Extra/R/Rtmp/
37** installing vignettes
38** testing if installed package can be loaded from temporary location
39Using library: /Volumes/Extra/R/R_Library
40Using temp directory: /Volumes/Extra/R/Rtmp/
41** testing if installed package can be loaded from final location
42Using library: /Volumes/Extra/R/R_Library
43Using temp directory: /Volumes/Extra/R/Rtmp/
44** testing if installed package keeps a record of temporary installation path
45* DONE (ggplot2)

考虑到该函数的常用性,如果你觉得这个函数好用,可以使用下面的命令将其保存到本地并进行配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1install$save()

这样你每次打开RStudio,install模块总是在存在。

如果代码库中程序存在问题,或者你有好的反馈,欢迎file issue。

参考资料

[1]

modules: https://github.com/klmr/modules

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 优雅R 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
把函数包起来就是一个R包 - 完整开发指南
NGS系列文章包括NGS基础、高颜值在线绘图和分析、转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这)、ChIP-seq分析 (ChIP-seq基本分析流程)、单细胞测序分析 (重磅综述:三万字长文读懂单细胞RNA测序分析的最佳实践教程)、DNA甲基化分析、重测序分析、GEO数据挖掘(典型医学设计实验GEO数据分析 (step-by-step))、批次效应处理等内容。
生信宝典
2020/10/30
2.6K0
把函数包起来就是一个R包 - 完整开发指南
「R」一个函数获取 TCGA/CCLE 单基因分子数据
在开发 UCSCXenaShiny 的基础上,我将其中支持的 UCSCXena TCGA/CCLE 单基因数据下载函数进行了整理,构建了一个单一的入口。这样即使用户无需加载 Shiny,也能够简单自在的下载 癌症单基因数据了。
王诗翔呀
2022/01/21
1.1K0
「R」一个函数获取 TCGA/CCLE 单基因分子数据
「R」MacOS 安装 R4.0
前往 https://mirrors.tuna.tsinghua.edu.cn/CRAN/ 下载新的版本,鼠标点击安装。
王诗翔呀
2020/07/03
1.9K0
「R」MacOS 安装 R4.0
不同安装R语言的R包的方法
在R语言中,安装R包是数据分析过程中不可或缺的一部分。当你需要执行特定的统计测试、可视化或其他任务时,你可能会发现相应的功能已经被封装在一个或多个R包中。然而,对于新手或需要一次性安装多个R包的用户来说,这个过程可能会有些繁琐。为了大规模安装所需要的R包,你可以使用几种不同的方法。以下是两种常见的方法:
生信学习者
2024/06/13
4450
自学攻略 | R包的三大来源与典型应用
R语言之所以能在生物信息学领域占据举足轻重的地位,除了其强大的统计计算能力外,更得益于其海量的R包(R Package) 生态系统。这些R包就像一个个功能模块,极大地扩展了R的功能,从数据处理、可视化到复杂的生物统计分析,几乎无所不能。
天意生信云
2025/07/08
1780
自学攻略 | R包的三大来源与典型应用
TidyFriday 如何编写一个自动获取和展示疫情数据的 R 包?
是不是总觉得会开发 R 包的都是大佬呢?其实你也可以,今天我们就为你揭开 R 包开发的神秘面纱!开发本文介绍的这个 R 包仅仅一些一些 R 语言的基础!
王诗翔呀
2020/07/06
1.2K0
TidyFriday 如何编写一个自动获取和展示疫情数据的 R 包?
旧版本的R3.6安装最新版的ggplot2
本来我这个段位,就不应该为安装包发愁了,毕竟统计学不会可以理解,编程学不好忍忍就过去了,但是说安装包出错,是可忍孰不可忍?
邓飞
2022/12/13
1.5K0
旧版本的R3.6安装最新版的ggplot2
「R」使用UCSCXenaTools获取数据进行生存分析(全英文)
The UCSC Xena platform provides an unprecedented resource for public omics data from big projects like The Cancer Genome Atlas (TCGA), however, it is hard for users to incorporate multiple datasets or data types, integrate the selected data with popular analysis tools or homebrewed code, and reproduce analysis procedures. To address this issue, we developed an R package UCSCXenaTools for enabling data retrieval, analysis integration and reproducible research for omics data from the UCSC Xena platform1.
王诗翔呀
2020/07/06
1.9K0
「R」使用UCSCXenaTools获取数据进行生存分析(全英文)
整理了一些自己可能会用到的R包
rPlotter 非常方便的在图片中抽提颜色 #devEMF Rstudio不能够直接输出emf格式图片,借助devEMF包可以实现 简单用法 library(devEMF) emf("bar.emf") plot(1,1) dev.off() 或者借助savePlot()函数在原生的Rgui中运行 library(ggplot2) ggplot()+geom_point(aes(x=1,y=1)) savePlot(filename="practice",type="emf")#文件名不用添加后缀 S
用户7010445
2020/09/22
1.9K0
整理了一些自己可能会用到的R包
R包终极解决方案
写在前面: 在如何通过Google来使用ggplot2可视化这篇文章中,我们曾经介绍过R语言在生物信息学中的重要性。 这篇文章也激发了很多小伙伴学习的热情。学习R语言必然会安装各种各样的包,很多人在这一步就遇到了困难, 刚开始学习R语言的时候我们经常会遇到各种包安装错误,比如 package ‘airway’ is not available(for R version 3.1.0)等等, 这篇文章我们就来系统性地整理一些新手可能遇到的问题以及解决方案。 当然,你不一定现在就会遇到,但是如果你遇到了,请记住
生信技能树
2018/03/08
2.6K0
R包终极解决方案
5R语言综合运用
y4 <- filter(deg, a>1 & b < 0.05);table(y4)
用户10556374
2023/05/18
2.5K0
R 和 RStudio 的安装及 R Profile 的配置 & 爬取 CRAN 上的所有 R 包的名称、发布日期和标题
安装 R 现在最新版的 R 语言是 3.6.2 版本 (2019 年 12 月 12 日发布),该发行版的名字是 Dark and Stormy Night (漆黑暴风夜 ??),事实上只要用 3.0
王诗翔呀
2020/07/06
4K0
R 和 RStudio 的安装及 R Profile 的配置 & 爬取 CRAN 上的所有 R 包的名称、发布日期和标题
TCGA的28篇教程- 使用R语言的RTCGA包获取TCGA数据
前些天被TCGA的终结新闻刷屏,但是一直比较忙,还没来得及仔细研读,但是笔记本躺着的一些TCGA教程快发霉了,借此契机好好整理一下吧,预计二十篇左右的笔记
生信技能树
2018/07/27
9.6K0
TCGA的28篇教程- 使用R语言的RTCGA包获取TCGA数据
使用pacman包来方便快捷的批量管理各种r包
当时以为是很厉害了的经验,也大力宣传了,所以绝大部分小伙伴都是直接就使用了我的经验。使用传统的install.packages或者BiocManager::install来安装一系列r包,如下所示:
生信技能树
2024/11/21
2270
使用pacman包来方便快捷的批量管理各种r包
「R」Rprofile:R 全局设置
根据我的 R 使用经验,结合 Y 叔和 Yihui 提供的一些便利函数,我构建了一个比较合适的 R 配置。推荐大家结合自己需求使用和自定义。
王诗翔呀
2020/08/14
1.7K0
你不需要真的这个包,而仅仅是需要它里面的数据
实际上,但凡学过一点点R语言的,都知道如何下载这样的R语言源代码压缩包文件来进行安装。实际上,这个包的 的官方说明书也写的很清楚:http://research-pub.gene.com/IMvigor210CoreBiologies/
生信技能树
2021/12/24
1.5K0
你不需要真的这个包,而仅仅是需要它里面的数据
数据处理的R包
整理数据的本质可以归纳为:对数据进行分割(Split),然后应用(Apply)某些处理函数,最后将结果重新组合(Combine)成所需的格式返回,简单描述为:Split - Apply - Combine。plyr包是Hadley Wickham为解决split – apply – combine问题而写的一个包。使用plyr包可以针对不同的数据类型,在一个函数内同时完成split – apply – combine三个步骤。plyr包的主函数是**ply形式的,函数名的第一个字符代表输入数据的类型,第二个字符代表输出数据的类型,其中第一个字符可以是(d、l、a),第二个字母可以是(d、l、a、_ ),不同的字母表示不同的数据格式,d表示数据框格式,l表示列表,a表示数组,_则表示没有输出。
润森
2020/02/17
5.1K0
数据处理的R包
生信入门马拉松之R语言基础-函数和R包(day 4)
生物R包网站Bioconductor-安装方式BiocManager::install("包名")
Crazy_George
2024/04/14
3980
11. R studio/R 工具指南(十:本地安装R 包)
有的时候,包怎么都无法安装,可能是因为受制于网络,如github;也可能是某些玄学问题,只好将R 的源文件下载下来,自行本地安装。
北野茶缸子
2021/12/17
2.5K0
04. R studio/R 工具指南(三:R包安装与使用常见问题)
mean(), list(), sample(),这些function 都来自于某package中。这些函数以及它们的package 都作为基础的包默认安装在了R中。(安装R 就会默认安装它们)
北野茶缸子
2021/12/17
2.7K0
04. R studio/R 工具指南(三:R包安装与使用常见问题)
推荐阅读
相关推荐
把函数包起来就是一个R包 - 完整开发指南
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验