Rstudio包管理一网打尽,最全的R包管理终极教程

Rstudio/R的包(package)管理是个老生常谈的问题,很少有人去总结,因为大家都认为比较简单。今天我就把所有的安装和管理R包的方法一起写一写。

一、包在哪里?

CRAN

官方包CRAN,通常国内选择镜像,方法自行百度。

Bioconductor

Bioconductor,这个通常只有生物信息学的人才用得到。

Github

Github,不用多说,一般不太稳定,但是想尝鲜可以的。大部分CRAN和Bioconductor都是托管在Github上的。

二、自带安装方法(CRAN)

Install Packages from Repositories or Local Files

e.g.
install.packages("tidyverse")
必须要加引号。该命令默认安装的都是CRAN上的包
默认的包管理,其实完全可以不用命令,因为Rstudio已经给大家带了界面,完全可以点击几下就安装、删除、升级等操作,非常方便。

image.png

如果你还是觉得命令行才够装逼,那就用这个命令好了。不过这个命令,还有很多细节,
比如,默认情况下你输入包名,比如说"tidyverse", 会自动从CRAN上检索对应的包,然后进行下载。如果你希望指定安装本地包,或者一个具体的网络地址,参考代码如下:

# from url resource
install.packages("https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/windows/contrib/3.5/Matrix_1.2-15.zip", repos=NULL)
# from local
install.packages("~/../Desktop/Matrix_1.2-15.zip", repos = NULL)

一次安装多个包

# multiple install
install.packages(c("slidify", "tidyverse", "devtools") )

大家还可以参考这篇文章R包安装函数"install.packages"函数详解

help

更多详细操作,请用help

# help
?install.packages()
# OR
help(package = "package")

查看已安装的R包(这个貌似没什么用):installed.packages()
查看某个包的具体描述:packageDescription("tidyverse")

Vignette

Vignette,这个中文意思大概就是使用场景展示,我觉得比help更有用,因为通常都是开发者用实例说明,对于一个包的上手,特别有用。Vignette的方法有两种:

弹出网页浏览

browseVignettes(package="tidyverse")
image.png

在命令行浏览

这个方法并不推荐,因为要分2步

  1. 先浏览一下这个package里面到底有几个Vignettes vignette(package = "rvest")
    这时候会弹出一个页面,在里面显示这个包到底有几个Vignettes

    image.png

  2. 继续运行命令,找到你想浏览的那个vignette("harvesting-the-web "),在右侧help面板就会弹出Vignette。

    image.png

How To Update, Remove And Check Installed Packages

#You can check what packages need an update with a call to the function:
old.packages()
#You can update all packages by using:
update.packages()
# Remove the packages
remove.packages("vioplot")

三、Bioconductor

是的!为了Bioconductor的包安装,Bioconductor单独做了一个用来安装的包程序。在R 3.5版本以前还有个方法,但现在R已经4.0了,不再推荐以前的方法。详见
https://www.jianshu.com/p/8e0dece51757
https://bioconductor.org/install/
现在的方法很简单,首先安装BiocManager包,然后就可以通过BiocManager下面的install命令来安装了。

install.packages("BiocManager")     
BiocManager::install("GEOquery") 

这里我特意解释一下::在R里面的究竟如何使用,是干什么用的。因为我们后面还会出现。

我们知道,在R中,要想使用某个包下的命令,必须先加载(library),否则系统会提示无该命令(function)。但我们有时候只用一下这个包的命令,没必要还先去加载它,因为加载的包越多,系统负担越重,越慢。所以,就有了::,它让我们不必加载这个包,就可以用它里面的命令。比如BiocManager::install("GEOquery")意思是用BiocManager抱里面的install命令来安装这个包。

四、devtools

devtools是个全能型选手,你几乎可以安装任何源头的包,首先是安装它install.packages("devtools")。在windows系统里,使用devtools必须先安装R配套的一个工具,叫做 Rtools on Windows,很多包都依赖这个工具,所以建议直接安装。并且要加入到你的环境变量,默认它在安装的时候会加入。不懂请百度“环境变量”。
下面就是这位全能型选手的命令:

  • install_bioc() from Bioconductor,
  • install_bitbucket() from Bitbucket,
  • install_cran() from CRAN,
  • install_git() from a git repository,
  • install_github() from GitHub,
  • install_local() from a local file,
  • install_svn() from a SVN repository,
  • install_url() from a URL, and
  • install_version() from a specific version of a CRAN package.
    当然一般要在前面加 devtools::
if (!require(devtools)) install.packages("devtools")
devtools::install_github("boxuancui/DataExplorer")

更详细的说明请见help文件或vignette

五、 remotes

remotes包与devtools基本相同,用法也基本相同,官方是这样定义它的:
This package is a lightweight replacement of the install_* functions in devtools. Indeed most of the code was copied over from devtools.
所以,我们强烈推荐用remotes取代devtools,因为它更轻,更小,更好用!而且支持所有的安装源,包括bioconductor
这里我就直接copy remotes的readme文件了。

Currently supported remote types

  • GitHub repositories via install_github.
    remotes::install_github("gaborcsardi/pkgconfig@v2.0.0")
  • Bitbucket repositories via install_bitbucket.
  • Generic git repositories via install_git. They need either a system git installation, or the git2r R package.
  • Local directories or package archive files via install_local.
  • Remote package archive files via install_url.
  • Packages in subversion repositories via install_svn. They need a system subversion installation.
  • Specific package versions from CRAN or other CRAN-like repositories via install_version. This includes outdated and archived packages as well.
  • All dependencies of a package in a local directory via install_deps.

Usage

# GitLab
Remotes: gitlab::jimhester/covr
# Git
Remotes: git::git@bitbucket.org:djnavarro/lsr.git
# Bitbucket
Remotes: bitbucket::sulab/mygene.r@default, djnavarro/lsr
# Bioconductor
Remotes: bioc::3.3/SummarizedExperiment#117513, bioc::release/Biobase
# SVN
Remotes: svn::https://github.com/tidyverse/stringr
# URL
Remotes: url::https://github.com/tidyverse/stringr/archive/HEAD.zip
# Local
Remotes: local::/pkgs/testthat

六、pacman

这个包,才是我们今天的王者,作者是Tyler Rinker,一位R语言大牛。pacman与另外一个包管理工具同名,在Linux 的Arch包管理和Manjaro都是用的pacman管理包。二者都叫pacman,但应该是不同的。
pacman之所好,是因为它简单,不需要那讨厌的“”,很多是连贯操作,而且命令也很短。而且它囊括了前面所有安装包的功能。

pacman依赖devtools,在使用前请安装并library

下面是一些常见的参考命令。

Installing, Loading, Unloading, Updating, & Deleting Packages with pacman

Quick Reference Table

pacman Function Base Equivalent Description
p_load install.packages + library Load and Install Packages
p_install install.packages Install Packages from CRAN
p_load_gh NONE Load and Install GitHub Packages
p_install_gh NONE Install Packages from GitHub
p_install_version install.packages &
packageVersion
Install Minimum Version of Packages
p_temp NONE Install a Package Temporarily
p_unload detach Unload Packages from the Search Path
p_update update.packages Update Out-of-Date Packages

一个命令,包含安装和加载,十分简单。p_load也是这里面最常用的命令
pacman::p_load(XML, devtools, RCurl, fakePackage, SPSSemulate)
除此之外,对上面的命令甚至还有很多简写,一样执行

Functions for installing, loading, unloading, updating, & deleting packages

如何更优雅

似乎我们该在安装前给一个判断,这个包事先有没有,如果有那就不要重复安装

if (!require("pacman")) install.packages("pacman")
pacman::p_load(package1, package2, package_n)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容