美文网首页
搜索并根据排名选择自己想要的包

搜索并根据排名选择自己想要的包

作者: 冬之心 | 来源:发表于2019-08-26 16:06 被阅读0次

title: "cranpackage"
author: "wintryheart"
date: "2019/8/26"
output: html_document


knitr::opts_chunk$set(echo = TRUE)

源起

  • 研究中会用到一起特殊的模型,而这些模型的包一般的教程里都不会介绍到。怎样找到这些包呢?

  • 一种方法是查看CRAN任务图:CRAN task views

  • 另一种方法是直接搜索CRAN的包数据库。这里主要总结这种方法。

准备

安装R包管理工具。

packagefinder包。

  • 主要函数

    • findPackage(keywords, mode) 函数,关键词搜索CRAN找包。例子:findPackage(c("meta","regression"), "and")
    • exploreFields(fields, term) 函数,在特定的fields搜索term。例子:exploreFields(c("Package", "Title"), "logistic")
    • whatsNew()函数,检查CRAN上的新包。
    • go()和 packageDetails()函数,显示包信息。
  • 试用感觉

    • packagefinder包不论是在线搜索包,还是在线搜索包的说明,都非常慢。慎用。
    • findPackage()输出的搜索结果列表图中,包括包的名称、得分和简要说明。在选择同类包时,挺实用。
library(packagefinder)
lca_pac2 <- findPackage(c("lca","lcm"))
lca_pac2
Rplot08.png

cranly包

cranly包支持分析CRAN上所有已收录的R包的相关数据,

  • 主要函数:

  • CRAN_package_db(), 通过提取CRAN上12000多个R包的元数据
  • clean_CRAN_db(), 清理并组织“tools::CRAN_package_db()”输出中的包名和作者名

  • build_network.cranly_db {cranly}, S3 method for class 'cranly_db'
  • build_network(object, perspective = "package"),计算包指令和协作网络的边和节点。
    • object是一个cranly_db对象。

  • extractor-functions {cranly},S3 method for class 'cranly_network'
  • package_with(x, name = NULL, exact = FALSE)通过与特定字符串匹配,查找包。
    • exact参数,是否精确匹配。默认为FALSE。

查找包名中包含 "glm"的包。
package_with(pkg_net, name = "glm")
可以通过与特定字符串匹配,查找包、作者、维护人员、许可证、版本等,
通过与特定字符串匹配的作者、包或名称查找包、作者、维护人员、许可证、版本等
packages_by(x, author, exact, flat)
packages_with(x, name = NULL, exact = FALSE, flat = TRUE)
authors_with(x, name = NULL, exact = FALSE, flat = TRUE)
authors_of(x, package = NULL, exact = FALSE, flat = TRUE)
emails_of(x, author = NULL, exact = FALSE, flat = TRUE)
emails_with(x, name = NULL, exact = FALSE, flat = TRUE)
descriptions_of(x, package = NULL, exact = FALSE, flat = TRUE)
titles_of(x, package = NULL, exact = FALSE, flat = TRUE)
licenses_of(x, package = NULL, exact = FALSE, flat = TRUE)
release_dates_of(x, package = NULL, exact = FALSE, flat = TRUE)
versions_of(x, package = NULL, exact = FALSE, flat = TRUE)


  • subset.cranly_network {cranly}, S3 method for class 'cranly_network'
  • subset(x, package = Inf, author = Inf, maintainer = Inf, directive = c("imports", "suggests", "enhances",
    "depends", "linking_to"), base = TRUE, recommended = TRUE, exact = TRUE, only = FALSE, ...)
  • 根据包、作者和/或指令(directive)构建cranly_network子集
    • only参数,如果为TRUE,子集只包括package参数和或author参数定义的包和或作者的数据。如果为FALSE,则包括所有与package和或author参数定义的包和或作者有关联节点的包和或作者。 默认为FALSE

  • summary.cranly_network {cranly},S3 method for class 'cranly_network'
  • summary(object, advanced = TRUE, ...) 计算一系列包指令和协作网络统计数据。
    • object是一个cranly_network对象。

  • plot.summary_cranly_network {cranly},S3 method for class 'summary_cranly_network'
  • plot(x, top = 20, according_to = NULL, scale = FALSE, ...) 根据一系列网络统计数据绘制的TopN包的图
    • x是一个 a summary_cranly_network对像。

  • plot.cranly_network {cranly} ## S3 method for class 'cranly_network'
  • plot(x, package = Inf, author = Inf, directive = c("imports", "suggests", "enhances", "depends",
    "linking_to"), base = TRUE, recommended = TRUE, exact = TRUE, global = TRUE, physics_threshold = 200, height = NULL,
    width = NULL, dragNodes = TRUE, dragView = TRUE, zoomView = TRUE, legend = TRUE, title = TRUE, plot = TRUE, ...)
  • 包或作者的cran网络(cranly_network())的交互式可视化描述

例子:查找LCA模型包

先下载cran包的库,然后提取目标子集

library(cranly)

# 下载CRAN的包数据库
cran_db <- clean_CRAN_db()
pkg_net <- build_network(cran_db, perspective = "package")

# 根据关键字"lca"和"lcm",搜索包。
lca_pac <- package_with(pkg_net, name=c("lca","lcm"))

方法一:先统计包的网络数据,然后根据定义的包提取子集,用ggplot2作图。

package_summaries <- summary(pkg_net)

# 由于summary之后的数据类型比较特殊,所以没法直接用subset批量提取。
lca_summaries <- data.frame()
for(i in 3:20) {lca_summaries <- rbind(lca_summaries, subset(package_summaries, package==lca_pac[i]))}
lca_summaries

# 出来的结果也不是summary_cranly_network类型,所以不能直接cranly包的plot命令。只能用ggplot对数据框作图。
ggplot(lca_summaries, aes(x=package,y=sort(page_rank)))+ geom_col()+coord_flip()
Rplot02.png

方法二:直接用cranly自带的subset()提取子集,以及自带的plot()展示统计指标帮助选择好包。


lca_net <- subset(pkg_net, package=lca_pac)
plot(lca_net)
Rplot01.png
# 注意一定要带only参数。only参数默认为FALSE,subset会把所有有关联的包都提取出来。如果only=TRUE,就只提取package定义好的包。
lca_net <- subset(pkg_net, package=lca_pac, only=TRUE)
# 画各包之间的关联网络图。
plot(lca_net)
Rplot.png
# 总结各包的网络统计数据
lca_summaries3 <- summary(lca_net)
# 根据特定指标,画重要性排序图。
plot(lca_summaries3, according_to = "page_rank")

Rplot03.png

参考文献

相关文章

网友评论

      本文标题:搜索并根据排名选择自己想要的包

      本文链接:https://www.haomeiwen.com/subject/bdcdectx.html