如何快速找到自己需要的 R 包

如何快速找到自己需要的 R 包

6 min read

Bioconductor 的存在让只用 R 语言完成 (90% 的) 生物信息分析成为了一种可能,也在很大程度上推动了 R 在生物信息领域的应用和发展。目前 Bioconductor 配合 R 3.6 使用升级到了 3.9 版本。一共有 R 包 1741 个。学习生物信息和 R 语言,它是非常好的资源。

平常偶尔会有人问到我这样的问题:我目前正在做某某分析,你知道有什么 R 包可以用么?如果是不熟的人而且他做的分析我也不熟悉,一般我的回答直接就是不知道;如果是好朋友那我就得顺手帮他快速的找到想要的 Bioconductor R 包。看完今天的文章,这个操作对你来说以后也没有什么难度。

几步操作,快准狠,找到自己要想的 Bioconductor 工具。

入门玩家

在 Bing,Google 等搜索引擎搜索 Bioconductor + 关键词。如果稍微进阶一步,你可能会配合上一些简单的搜索语法,比如指定在它的官方网站搜索,甚至指定搜索一些文件类型。这不是本文的重点,暂时就不展开了。

普通玩家

如果你已经使用过一些 Bioconductor 包,那么肯定或多或少浏览过某一个具体 R 包的主页。你会发现在官网的上方有一个搜索框,只要在里面搜索自己能想到的关键词就会在整个网站内进行检索。不过由于索引内容的问题,你搜出来的链接一是不一定可以打的开,二是打开了不一定有你关心的东西。

这时候,你需要了解 Bioconductor 内一个特有的「分类器」biocViews

biocViews 对所有的 R 包按照四个维度进行了分类:

其中每一个大类下面都有第二级或者第三极分类,如下为部分截图。每一个 R 包会根据自己的功能被打上若干个标签。

在这个页面,你就可以放心的根据自己需求的关键词进行检索了,因为是开发者给 R 包定义标签,所以找起来非常准确。而且这个页面的搜索框会根据你输入的内容进行自动提示,帮你找到自己关心的关键词。在搜索结果页,你可以看到最基本的 R 包信息。

进阶玩家

如果不甘心止步于普通玩家,现在有了一个进阶的机会。终于有一个 Bioconductor 的 R 包对 Bioconductor 自己动手了。

接下来要介绍的这个 Bioconductor R 包叫做 BiocPkgTools。简单的说,它其实是对所有的 Bioconductor R 进行了一次文本挖掘和整理。通过几个函数可以让我们快速的获得所有包的 metadata, 被下载情况和依赖关系等等,而所有的数据都会通过 tidy data 的形式呈现方便我们进一步操作。你可以通过 [主页](https://bioconductor.org/packages/BiocPkgTools](https://bioconductor.org/packages/BiocPkgTools) 进行深入了解,这里只介绍几个和文章相关的功能。

更易用的搜索

作者提取了所有的 biocViews 标签,制作了一个可以交互的可视化气泡图。

# if (!requireNamespace("BiocManager", quietly = TRUE))
#   install.packages("BiocManager")

# BiocManager::install("BiocPkgTools")

library(BiocPkgTools)
biocExplore()

如下图所示,首先在 filter 中进行筛选,然后就会出现带有相关标签的 R 包,颜色的大小表示了下载的相对次数或者说受欢迎程度。

点击自己感兴趣的一个包,就可以看到更加具体的介绍。包括描述,最近下载次数和主页地址等信息。

元数据探索

每一个 R 包都会有一个描述文件,其中记录了关于这个包最基本的信息,如下图所示。

因为这个文本是有固定字段可寻的,所以作者把所有的描述文件按照其内容进行整合后做成了一个 data.frame。


bpi <- biocPkgList()
colnames(bpi)

> colnames(bpi)
 [1] "Package"                   "Version"
 [3] "Depends"                   "Suggests"
 [5] "License"                   "MD5sum"
 [7] "NeedsCompilation"          "Title"
 [9] "Description"               "biocViews"
[11] "Author"                    "Maintainer"
[13] "git_url"                   "git_branch"
[15] "git_last_commit"           "git_last_commit_date"
[17] "Date/Publication"          "source.ver"
[19] "win.binary.ver"            "mac.binary.el-capitan.ver"
[21] "vignettes"                 "vignetteTitles"
[23] "hasREADME"                 "hasNEWS"
[25] "hasINSTALL"                "hasLICENSE"
[27] "Rfiles"                    "Enhances"
[29] "dependsOnMe"               "Imports"
[31] "importsMe"                 "suggestsMe"
[33] "LinkingTo"                 "Archs"
[35] "VignetteBuilder"           "URL"
[37] "SystemRequirements"        "BugReports"
[39] "Video"                     "linksToMe"
[41] "OS_type"                   "License_restricts_use"
[43] "PackageStatus"             "License_is_FOSS"
[45] "organism"

一旦变成了 data.frame 就可以进行各种操作了,比如看看那些包用到了 DESeq2。

library(dplyr)
bpi %>%
    filter(Package=="DESeq2") %>%
    pull(dependsOnMe) %>%
    unlist()
# [1] "DChIPRep" "DEXSeq"   "FourCSeq" "rgsepd"   "TCC"      "XBSeq"

查看一下感兴趣的包对应 URL 地址

bpi %>%
    filter(Package=="DESeq2") %>%
    pull(URL) %>%
    unlist()

#[1] "https://github.com/mikelove/DESeq2"

One more thing

如果想要的包不在 Bioconductor 而是 CRAN 中甚至是在 GitHub 上,又该怎么办呢?有一个 网站 自称可以「搜索 R 的一切」,推荐给你。


本文作者:思考问题的熊

版权声明:本博客所有文章除特别声明外,均采用 知识共享署名 - 非商业性使用 - 禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。

扫码即刻沟通

前一篇

大文本另类去重多种解法

后一篇

给你的高效搜索小技巧