前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「R」Pacman:你的 R 包管家

「R」Pacman:你的 R 包管家

作者头像
王诗翔呀
发布2020-07-04 17:41:10
1.2K0
发布2020-07-04 17:41:10
举报
文章被收录于专栏:优雅R优雅R

一年多前翻译的,今天Check了下,内容基本没有过时。该包最主要的特点是提供了批量化的操作和下载方式,对小白来说是比较友好的,也可以避免一堆library(xxpkg)的情况,有点 Python 中 import pkg1, pkg2, ... 的感觉。

pacman包是一个整合了基础包library相关函数的包,用于更方便地对R包进行管理。该包可以添加到.Rprofile以便于显式地指定该包的函数,增加工作效率。其中关键函数p_load可以很好地提升论坛提问与博文,它会自动加载包,如果没有找到,会自动安装缺失包。

pacman包中的函数都以p_xxx的格式存在,其中xxx是函数执行的功能。比如p_load允许用户载入一个或多个包,用于替换libraryrequire函数,如果包不在本地存在,它会自动为你安装。对于大多数的pacman函数,参数不需要指定为字符串。

安装、载入、卸载、更新与删除

速查表

Pacman 函数

Base 等价

描述

p_load

install.packages + library

载入与安装包

p_install

install.packages

从CRAN安装包

p_load_gh

NONE

载入和安装Github包

p_install_gh

NONE

从Github安装包

p_install_version

install.packages & packageVersion

安装包的最小版本

p_temp

NONE

暂时安装包

p_unload

detach

从搜索路径卸下包

p_update

update.packages

更新过期包

The heart of pacman is it's ability to reduce typing in package management actions. The functions in this section act on packages.

安装和载入

p_load 是通常使用的工具,可以安装、加载和更新包。函数形式如下

代码语言:javascript
复制
p_load(..., char, install = TRUE, update = getOption("pac_update"), character.only = FALSE)

...参数传入包名,比如你需要用下面的方式安装一系列包:

代码语言:javascript
复制
packs <- c("XML", "devtools", "RCurl", "fakePackage", "SPSSemulate")
success <- suppressWarnings(sapply(packs, require, character.only = TRUE))
install.packages(names(success)[!success])
sapply(names(success)[!success], require, character.only = TRUE)

使用pacman可以简化为:

代码语言:javascript
复制
pacman::p_load(XML, devtools, RCurl, fakePackage, SPSSemulate)
仅安装

有些用户想仅仅安装包,这可以使用p_install(别名为p_get)。

代码语言:javascript
复制
p_install(dbConnect, qdap, reports)
从Github安装和载入包

pacman提供了从Github上安装和载入包的函数,其实就是基于devtools包的函数:

Note: Packages are passed as character vector repository addresses in the form of username/repo[/subdir][@ref|#pull].

代码语言:javascript
复制
p_install_gh(c("Dasonk/githubSearch", "trinker/regexr", "hadley/httr@v0.4"))
代码语言:javascript
复制
p_load_gh("Dasonk/githubSearch", "trinker/regexr", "hadley/httr@v0.4")

安装包最小版本

有时候需要安装特定版本的包,可以使用:

代码语言:javascript
复制
p_install_version(
    c("pacman", "testthat"),
    c("0.2.0", "0.9.1")
)
代码语言:javascript
复制
Version of pacman (v. 0.2.0) is suitable

Version of testthat (v. 0.9.1) is suitable

暂时安装

p_temp允许用户暂时安装一个包,线程一关闭即消失:

代码语言:javascript
复制
p_temp(aprof)

p_isinstalled(aprof)
p_isloaded(aprof)
代码语言:javascript
复制
> p_temp(aprof)
trying URL 'http://cran.rstudio.com/bin/windows/contrib/3.1/aprof_0.2.zip'
Content type 'application/zip' length 34037 bytes (33 Kb)
opened URL
downloaded 33 Kb

package 'aprof' successfully unpacked and MD5 sums checked

The downloaded binary packages are in
        C:\Users\you\AppData\Local\Temp\RtmpYh6bSr\downloaded_packages

aprof installed
Loading required package: aprof
>
> p_isinstalled(aprof)
[1] FALSE
> p_isloaded(aprof)
aprof
 TRUE 

卸载

另一个好用的函数是可以将某个包从当前路径卸载(不是删除),但基本的R包不能被卸载(R启动就用到的包)。

格式如下:

代码语言:javascript
复制
p_unload(..., negate = FALSE, char, character.only = FALSE)

例子:

代码语言:javascript
复制
p_load(lattice)
p_isloaded(lattice)
p_unload(lattice)
p_isloaded(lattice)
代码语言:javascript
复制
> p_load(lattice)
> p_isloaded(lattice)
lattice
   TRUE 
> p_unload(lattice)
The following packages have been unloaded:
lattice

> p_isloaded(lattice)
lattice
  FALSE 

更新:

代码语言:javascript
复制
p_update()

有时候想只查询,不实际更新:

代码语言:javascript
复制
p_update(FALSE)

删除:

代码语言:javascript
复制
p_delete(fakePackage, stats)
代码语言:javascript
复制
> p_delete(fakePackage, stats)
The following packages are a base install and will not be deleted:
stats

The following packages not found in library:
fakePackage

线程信息

速查表

Pacman Function

Base Equivalent

描述

p_loaded

.packages & sessionInfo

列出已加载包

p_isloaded

NONE

测试某包是否加载

用法:

代码语言:javascript
复制
p_loaded()

返回除了基础包的其他包,下面可以返回所有包:

代码语言:javascript
复制
p_loaded(all = TRUE)

检查包:

代码语言:javascript
复制
p_loaded(base, MASS)
代码语言:javascript
复制
 base  MASS
 TRUE FALSE 
代码语言:javascript
复制
p_isloaded(methods, stats)
代码语言:javascript
复制
methods   stats
   TRUE    TRUE 

本地包信息

速查表

Pacman Function

Base Equivalent

描述

p_author

packageDescription

Author of Package

p_citation

citation

Citation for Package

p_data

data

List Package Data Sets

p_depends & p_depends_reverse

package_dependencies & dependsOnPkgs

包依赖或反向依赖

p_exists

available.packages & list.files + .libPaths

检查包是否存在于本地或者是CRAN

p_functions

loadNamespace + getNamespaceExports

包函数

p_help

help

HTML/PDF Manuals查看

p_information

packageDescription

包信息

p_interactive

NONE

交互式搜索包

p_news

news

包NEWS

p_version

packageVersion & R.Version

包版本

p_vignette

browseVignettes

包 Vignettes查看

内容有点多,想全部学习的,查看 http://trinker.github.io/pacman/vignettes/Introduction_to_pacman.html

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装、载入、卸载、更新与删除
    • 安装和载入
      • 仅安装
      • 从Github安装和载入包
    • 安装包最小版本
      • 暂时安装
        • 卸载
          • 更新:
            • 删除:
            • 线程信息
            • 本地包信息
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档