Loading [MathJax]/jax/input/TeX/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包的三大来源与典型应用
R语言之所以能在生物信息学领域占据举足轻重的地位,除了其强大的统计计算能力外,更得益于其海量的R包(R Package) 生态系统。这些R包就像一个个功能模块,极大地扩展了R的功能,从数据处理、可视化到复杂的生物统计分析,几乎无所不能。
天意生信云
2025/07/08
1030
自学攻略 | R包的三大来源与典型应用
「R」MacOS 安装 R4.0
前往 https://mirrors.tuna.tsinghua.edu.cn/CRAN/ 下载新的版本,鼠标点击安装。
王诗翔呀
2020/07/03
1.9K0
「R」MacOS 安装 R4.0
TCGA的28篇教程- 使用R语言的RTCGA包获取TCGA数据
前些天被TCGA的终结新闻刷屏,但是一直比较忙,还没来得及仔细研读,但是笔记本躺着的一些TCGA教程快发霉了,借此契机好好整理一下吧,预计二十篇左右的笔记
生信技能树
2018/07/27
9.5K0
TCGA的28篇教程- 使用R语言的RTCGA包获取TCGA数据
Day6-学习R包
使用到哪个包就去安装和加载,知道要用的函数以及简单使用规律,查看帮助文档入门,统计学学到一定的程度,不要默认值,去指定值,这个过程可以调试。
用户10838900
2023/11/18
2390
整理了一些自己可能会用到的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包 - 完整开发指南
NGS系列文章包括NGS基础、高颜值在线绘图和分析、转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这)、ChIP-seq分析 (ChIP-seq基本分析流程)、单细胞测序分析 (重磅综述:三万字长文读懂单细胞RNA测序分析的最佳实践教程)、DNA甲基化分析、重测序分析、GEO数据挖掘(典型医学设计实验GEO数据分析 (step-by-step))、批次效应处理等内容。
生信宝典
2020/10/30
2.5K0
把函数包起来就是一个R包 - 完整开发指南
「R」Rprofile:R 全局设置
根据我的 R 使用经验,结合 Y 叔和 Yihui 提供的一些便利函数,我构建了一个比较合适的 R 配置。推荐大家结合自己需求使用和自定义。
王诗翔呀
2020/08/14
1.6K0
R包|用SCI文章的配色画图
我们在进行R进行画图时,常常会感叹默认配色难看,又不愿去找配色。因此,本期给大家推荐R包ggsci[1]解决以上问题。
小汪Waud
2023/02/16
1.2K0
R包|用SCI文章的配色画图
TidyFriday 如何编写一个自动获取和展示疫情数据的 R 包?
是不是总觉得会开发 R 包的都是大佬呢?其实你也可以,今天我们就为你揭开 R 包开发的神秘面纱!开发本文介绍的这个 R 包仅仅一些一些 R 语言的基础!
王诗翔呀
2020/07/06
1.2K0
TidyFriday 如何编写一个自动获取和展示疫情数据的 R 包?
04. R studio/R 工具指南(三:R包安装与使用常见问题)
mean(), list(), sample(),这些function 都来自于某package中。这些函数以及它们的package 都作为基础的包默认安装在了R中。(安装R 就会默认安装它们)
北野茶缸子
2021/12/17
2.6K0
04. R studio/R 工具指南(三:R包安装与使用常见问题)
你不需要真的这个包,而仅仅是需要它里面的数据
实际上,但凡学过一点点R语言的,都知道如何下载这样的R语言源代码压缩包文件来进行安装。实际上,这个包的 的官方说明书也写的很清楚:http://research-pub.gene.com/IMvigor210CoreBiologies/
生信技能树
2021/12/24
1.5K0
你不需要真的这个包,而仅仅是需要它里面的数据
5R语言综合运用
y4 <- filter(deg, a>1 & b < 0.05);table(y4)
用户10556374
2023/05/18
2.4K0
R语言naniar包(新名词:阴影矩阵;Shadow matrices)
因为ggplot2不能处理缺失值,所以我们得到了一个warning message ,我们可以使用geom_miss_point() 去展示缺失数据。
用户1359560
2020/02/11
1.7K0
R语言naniar包(新名词:阴影矩阵;Shadow matrices)
「R」一个函数获取 TCGA/CCLE 单基因分子数据
在开发 UCSCXenaShiny 的基础上,我将其中支持的 UCSCXena TCGA/CCLE 单基因数据下载函数进行了整理,构建了一个单一的入口。这样即使用户无需加载 Shiny,也能够简单自在的下载 癌症单基因数据了。
王诗翔呀
2022/01/21
1.1K0
「R」一个函数获取 TCGA/CCLE 单基因分子数据
R包终极解决方案
写在前面: 在如何通过Google来使用ggplot2可视化这篇文章中,我们曾经介绍过R语言在生物信息学中的重要性。 这篇文章也激发了很多小伙伴学习的热情。学习R语言必然会安装各种各样的包,很多人在这一步就遇到了困难, 刚开始学习R语言的时候我们经常会遇到各种包安装错误,比如 package ‘airway’ is not available(for R version 3.1.0)等等, 这篇文章我们就来系统性地整理一些新手可能遇到的问题以及解决方案。 当然,你不一定现在就会遇到,但是如果你遇到了,请记住
生信技能树
2018/03/08
2.6K0
R包终极解决方案
宏宏的学习笔记Day6 学习R包
mutate(test, new = Sepal.Length * Sepal.Width)
咕咚咕叽
2024/04/19
1850
使用pacman包来方便快捷的批量管理各种r包
当时以为是很厉害了的经验,也大力宣传了,所以绝大部分小伙伴都是直接就使用了我的经验。使用传统的install.packages或者BiocManager::install来安装一系列r包,如下所示:
生信技能树
2024/11/21
1900
使用pacman包来方便快捷的批量管理各种r包
【紧急通知】下载R包却联网失败?初学者的痛
我们给出来的解决方案,仍然是;之前研发好的 url.method 这个配置的解决方案;
生信技能树
2020/04/14
1.1K0
【紧急通知】下载R包却联网失败?初学者的痛
「R」Obtain RNAseq Values for a Specific Gene in Xena Database
写这篇文档的原因是有使用者问我如何获取单个基因的表达值,这个操作我其实在很久之前的生存分析示例文档中介绍过,但用户有所疑惑,说明我写的不清楚或者无法找到,所以针对性就这类问题进行介绍。
王诗翔呀
2020/07/24
5110
不同安装R语言的R包的方法
在R语言中,安装R包是数据分析过程中不可或缺的一部分。当你需要执行特定的统计测试、可视化或其他任务时,你可能会发现相应的功能已经被封装在一个或多个R包中。然而,对于新手或需要一次性安装多个R包的用户来说,这个过程可能会有些繁琐。为了大规模安装所需要的R包,你可以使用几种不同的方法。以下是两种常见的方法:
生信学习者
2024/06/13
3560
相关推荐
自学攻略 | R包的三大来源与典型应用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档