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

2019-08-26  本文已影响0人  冬之心

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


knitr::opts_chunk$set(echo = TRUE)

源起

准备

安装R包管理工具。

packagefinder包。

library(packagefinder)
lca_pac2 <- findPackage(c("lca","lcm"))
lca_pac2
Rplot08.png

cranly包

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




查找包名中包含 "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)





例子:查找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

参考文献

上一篇 下一篇

猜你喜欢

热点阅读