Package ‘cranly’
2018年3月28日
标题 CRAN中的包指令和协作网络。
版本 0.1
简介 为CRAN包数据库提供核心可视化和概要。提供全面的方法来清理和组织信息。在CRAN包数据库中,用于构建包指令网络(决定,导入,建议,增强)和协作网络,以及计算总结和从结果网络中导入交互式可视化。
网络可视化R包‘visNetwork’<https://CRAN.R-project.org/package=visNetwork>。此包还提供将网络强制到'igraph' <https://cran.r-project.org/package=igraph>的功能以用于进一步的分析与建模。
URL https://github.com/ikosmidis/cranly
错误报告 https://github.com/ikosmidis/cranly/issues
需要版本 R (>= 3.4.0)
导入 visNetwork, colorspace, igraph, magrittr, stringr, ggplot2, countrycode
执照 GPL-3
编码 TF-8
LazyData 支持
RoxygenNote版本 6.0.1
推荐 testthat, knitr, rmarkdown, covr
VignetteBuilder knitr
需要编译 否
作者 Ioannis Kosmidis [aut, cre] <https://orcid.org/0000-0003-1556-0302>
维护 Ioannis Kosmidis <ioannis.kosmidis@warwick.ac.uk>
库 CRAN
发布日期 2018-03-28 09:11:08 UTC
将cranly_network强制到graph对象
说明
将cranly_network强制到graph对象
使用
## S3 method for class 'cranly_network'
as.igraph(x, reverse = FALSE, ...)
参数
x cranly_network 对象
reverse 逻辑。边缘的方向是否应该反转?视情况而定。默认为TRUE
... 目前未使用
详细
cranly_network 对象与perspective = "package"的协定为:边缘的指向为:由一个包到另一个被其输入,建议,增强或依赖于其的另一个包。reverse将这一指向反转至正确计算的相关网络摘要(详见 summary.cranly_network)。reverse只有在当attr(x, "perspective")为"package"时相关并当attr为(x, "perspective")为"author"时忽略,在此情况下graph对象显author的无向网络
举例
## Not run:
data("cran20032018", package = "cranly")
## Package directives network
package_network <- build_network(object = cran20032018, perspective = "package")
igraph::as.igraph(package_network)
## Author collaboration network
author_network <- build_network(object = cran20032018, perspective = "author")
igraph::as.igraph(author_network)
## End(Not run)
对象的build_network 方法
说明
对象的build_network 方法
使用
build_network(object, ...)
参数
object 用于建立网络的对象
... 传递给方法的其他参数
另请参阅
build_network.cranly_network
计算包指令和协作网络的边缘与节点
说明
计算包指令和协作网络的边缘与节点
使用
## S3 method for class 'cranly_db'
build_network(object = clean_CRAN_db(), trace = FALSE,
perspective = "package", ...)
参数
object cranly_db 对象
trace 逻辑。是否输出进程信息?默认为FALSE
character 字符。建立一个"package"(默认)或"author"网络?
... 目前未使用
详细
cranly_network 对象与perspective = "package"的协定为:边缘的指向为:由一个包到另一个被其输入,建议,增强或依赖于其的另一个包。author网络在所有cranly方法中被分析和可视化为无定向的。
赋值
拥有2个网络边缘和节点的data.frames
举例
## Not run:
data("cran20032018", package = "cranly")
## Package directives network
package_network <- build_network(object = cran20032018, perspective = "package")
head(package_network$edges)
head(package_network$nodes)
attr(package_network, "timestamp")
class(package_network)
## Author collaboration network
author_network <- build_network(object = cran20032018, perspective = "author")
head(author_network$edges)
head(author_network$nodes)
attr(author_network, "timestamp")
class(author_network)
## End(Not run)
输入tools::CRAN_package_db()
清理并整理包和作者名称
说明
输入tools::CRAN_package_db()
清理并整理包和作者名称
使用
clean_CRAN_db(packages_db = tools::CRAN_package_db(),
clean_directives = clean_up_directives, clean_author = clean_up_author)
参数
packages_db 对CRAN_package_db (默认)的输出拥有固定结构的 data.frame
clean_directives 将包描述中的各种指令的内容转换为包名称向量的函数
默认为clean_up_directives
clean_author 将author描述中的内容转换为authors包名称向量的函数
默认为 clean_up_author
详细
clean_CRAN_db 使用 clean_up_directives 和 clean_up_authors 来在不同的指令下清理作者名与包名(如数据中的 Imports, Depends, Suggests, Enhances。从CRAN_package_db生成架构)并返还整理完毕的数据到cranly_db类,用于进一步的分析。
此函数能够分辨并终结文件描述中Author区域的错误,提取仅有author名称的清单。相关操作被编码于clean_up_author函数中。具体地说,一些对版权所有者的引用必须去除,因为他们影响了作者名单。目前版本的clean_up_author仍不能在使用正则表达式上尽善尽美但目前它在整理Author领域上表现良好。在未来版本中它将被进一步升级。
自定义清理功能也可以由clean_指令和clean_author参数提供
赋值
一个和packaged_db拥有相同变量的data.frame(但使用小写名称),一个归属于并从class_db继承的时间戳。
举例
## Not run:
## Before cleaning
cran_db <- tools::CRAN_package_db() cran_db[cran_db$Package == "weights", "Author"]
## After clean up
package_db <- clean_CRAN_db(cran_db) package_db[package_db$Package == "weights", "Author"]
## End(Not run)
清除作者名称
说明
清除作者名称
使用
clean_up_author(variable)
参数
variable 一个字符串
赋值
一个字符串向量的列表
举例
clean_up_author(paste("The R Core team, Brian & with some assistance from Achim, Hadley;", "Kurt\n Portugal; Ireland; Italy; Greece; Spain"))
清理包的指令
说明
清理包的指令
使用
clean_up_directives(variable)
参数
variable 一个字符串
赋值
一个字符串向量的列表
举例
clean_up_directives("R (234)\n stats (>0.01), base\n graphics")
从2018年3月20日的清理和处理CRAN包元数据。
说明
这是一个1000个R包的随机样本,来自调用于2018年3月20日的经过处理的CRAN_package_db()版本。具体地说,生成的数据框架被传递给clean_CRAN_db函数,并且只保留了以下变量:
使用
cran20032018
形式
一个来自cranly_db类(继承data.frame)的对象,有1000行和13列。
详细
- package
- version
- date
- url
- depends
- imports
- suggests
- enhances
- license
- author
- maintainer
- contact
- md5sum
作者的名字已经通过iconv函数转换为ASCII
cranly:CRAN包数据库分析与可视化
说明
cranly:CRAN包数据库分析与可视化
详细
为CRAN包数据库提供核心可视化和概要。提供全面的方法来清理和组织信息。在CRAN包数据库中,用于构建包指令网络(决定,导入,建议,增强)和协作网络,以及计算总结和从结果网络中导入交互式可视化。
网络可视化R包‘visNetwork’<https://CRAN.R-project.org/package=visNetwork>。此包还提供将网络强制到'igraph' <https://cran.r-project.org/package=igraph>的功能以用于进一步的分析与建模。
感谢
David Selby (http://selbydavid.com) 测试了cranly的先行版本并提供了很有帮助的评论和反馈。感谢他的帮助。
通过与特定字符串匹配的作者或包来查找包和作者
说明
通过与特定字符串匹配的作者或包来查找包和作者
使用
package_by(x, author = NULL, exact = FALSE)
package_with(x, name = NULL, exact = FALSE)
author_with(x, name = NULL, exact = FALSE)
author_of(x, package = NULL, exact = FALSE)
## S3 method for class 'cranly_network'
package_by(x, author = NULL, exact = FALSE)
## S3 method for class 'cranly_network'
author_of(x, package = NULL, exact = FALSE)
## S3 method for class 'cranly_network'
author_with(x, name = NULL, exact = FALSE)
## S3 method for class 'cranly_network'
package_with(x, name = NULL, exact = FALSE)
参数
x cranly_network 对象
author 与作者名称匹配的字符串向量
exact 逻辑。是否应该完全匹配?默认为TRUE
name 一个字符字符串的矢量,有匹配的名称
package 一个字符字符串向量,有匹配的包名称
举例
## Not run:
data("cran20032018", package = "cranly")
## Using a package directives network
package_network <- build_network(cran20032018)
## Find all packages containing glm in their name
package_with(package_network, name = "glm")
## Find all authors of packages containing brglm in their name
author_of(package_network, package = "rglm", exact = FALSE)
## Find all packages with brglm in their name
package_with(package_network, name = "rglm", exact = FALSE)
## Find all authors of the package brglm2
author_of(package_network, package = "brglm2", exact = TRUE)
## Find all authors with Ioannis in their name
author_with(package_network, name = "Ioannis", exact = TRUE)
## Using an author collaboration network
author_network <- build_network(cran20032018, perspective = "author")
## Find all packages containing glm in their name
package_with(author_network, name = "glm")
## Find all authors of packages containing brglm in their name
author_of(author_network, package = "rglm", exact = FALSE)
## Find all packages with brglm in their name
package_with(author_network, name = "rglm", exact = FALSE)
## Find all authors of the package brglm2
author_of(author_network, package = "brglm2", exact = TRUE)
## Find all authors with Ioannis in their name
author_with(author_network, name = "Ioannis", exact = TRUE)
## End(Not run)
使用vis.js库实现cranly_network包或作者的交互式可视化。
说明
使用vis.js库实现cranly_network包或作者的交互式可视化
使用
## S3 method for class 'cranly_network'
plot(x, package = NULL, author = NULL,
physics_threshold = 200, height = NULL, width = NULL,
directive = c("imports", "suggests", "enhances", "depends"),
dragNodes = TRUE, dragView = TRUE, zoomView = TRUE, exact = TRUE,
legend = FALSE, title = FALSE, global = TRUE, ...)
参数
x cranly_network 对象
package 一个带有包名称的字符字符串向量
author 一个带有作者名称的字符字符串向量
physics_threshold 整数。在关闭物理模拟的边缘之前,有多少节点?默认为200
另请参阅visEdges
Height 高度(可选,默认为自动大小)
Width 宽度(可选,默认为自动大小)
directive 矢量。至少为"Imports", "Suggests", "Enhances", "Depends" 中之一
dragNodes 逻辑。用户是否可以拖拽不固定的节点?默认为TRUE
dragView 逻辑。用户是否可以拖拽视野?默认为TRUE
zoomView 逻辑。用户是否可以缩放?默认为TRUE
exact 逻辑。是否需要完全匹配?默认为TRUE
legend 逻辑。是否要在可视化结果中增加legend?默认为FALSE
title 逻辑。是否要在可视化结果中增加title?默认为FALSE
global 逻辑。如果是TRUE (默认) 则网络概括统计在对象上计算
反之,根据包和作者对对象的子集计算
... 目前未使用
举例
## Not run:
data("cran20032018", package = "cranly")
package_network <- build_network(cran20032018)
## The package directives network of all users with Ioannis in
## their name from the CRAN database subset cran20032018
plot(package_network, author = "Ioannis")
## The package directives network of "Achim Zeileis"
plot(package_network, author = "Achim Zeileis")
author_network <- build_network(cran20032018, perspective = "author")
plot(author_network, author = "Ioannis", title = TRUE)
## End(Not run)
根据一系列的网络统计数据进行的前n个package与author的条状图
说明
根据一系列的网络统计数据进行的前n个package与author的条状图
使用
## S3 method for class 'summary_cranly_network'
plot(x, top = 20, according_to = NULL,
scale = FALSE, ...)
参数
x summary_cranly_network 对象
top 整数。如何绘制软件包或作者?默认为20
according_to 根据top-top列表产生的统计数据。可用统计详见summary.cranly_network
scale 逻辑。在绘制之前,是否应该将统计数据缩放到0和1之间?默认为FALSE
... 目前未使用
举例
## Not run:
data("cran20032018", package = "cranly")
## package network
package_network <- build_network(cran20032018)
package_summaries <- summary(package_network)
plot(package_summaries, according_to = "n_imported_by", top = 30)
plot(package_summaries, according_to = "n_depended_by", top = 30)
plot(package_summaries, according_to = "page_rank", top = 30)
## author network
author_network <- build_network(cran20032018, perspective = "author")
author_summaries <- summary(author_network)
plot(author_summaries, according_to = "n_collaborators", top = 30)
plot(author_summaries, according_to = "n_packages", top = 30)
plot(author_summaries, according_to = "page_rank", top = 30)
## End(Not run)
根据author,package和/或directive建立子集
说明
根据author,package和/或directive建立子集
使用
## S3 method for class 'cranly_network'
subset(x, package = NULL, author = NULL,
directive = c("imports", "suggests", "enhances", "depends"), exact = TRUE, only = FALSE, ...)
参数
x cranly_network 对象
package 一个带有包名称的字符字符串向量
author 一个带有作者名称的字符字符串向量
directive 矢量。至少为"Imports", "Suggests", "Enhances", "Depends" 中之一
exact 逻辑。是否需要完全匹配?默认为TRUE
only 逻辑。如果为TRUE则子集仅包含在以package命名的package和/或authors命名的author之间;如果为FALSE(默认) 则包含所有其他和包和/或作者关联的包和/或作者。
... 目前未使用
计算一系列的包指令和协作网络统计信息。
说明
计算一系列的包指令和协作网络统计信息。
使用
## S3 method for class 'cranly_network'
summary(object, advanced = TRUE, ...)
参数
x cranly_network 对象
advanced 逻辑。如果为FALSE(默认)则仅运行基本网络统计;如果为TRUE则包含高级统计(详见“详细”)
... 目前未使用
详细
如果attr(object,"perspective")为"package"则结果的data.frame将必须为下列变量之一:
- package. 包名称
- n_authors (basic). 包的作者数量
- n_imports (basic). 包中输入的package的数量
- n_imported_by (basic). package被其他包输入的次数
- n_suggests (basic). 包建议的packge数
- n_suggested_by (basic). package被其他包建议的次数
- n_depends (basic). 包依靠的package的数量
- n_depended_by (basic). 依靠于这个package的包的数量
- n_enhances (basic). package提升的包的数量
- n_enhanced_by (basic). 提升此包的package数量
- betweenness (advanced). 包网络中包的中间性,由betweenness运算
- closeness (advanced). 包网络中包的密切关系中心,由closeness运算
- page_rank (advanced). 包网络中包的Google PageRank; 由page_rank 运算
- degree (advanced). 包网络中包的维度; 由degree运算
- eigen_centrality (advanced). 包网络中包的特征向量中心得分; 由eigen_centrality运算
如果attr(object,"perspective")为"author"则结果的data.frame将必须为下列变量之一:
- author. 作者名称
- n_packages (basic). package authors中出现author的package数量
- n_collaborators (basic). CRAN中author拥有的所有co-authors的数量
- betweenness (advanced).作者网络中作者的中间性,由betweenness运算
- closeness (advanced). 作者网络中作者的密切关系中心,由closeness运算
- page_rank (advanced). 作者网络中作者的Google PageRank; 由page_rank 运算
- degree (advanced). 作者网络中作者的维度; 由degree运算。等同于 n_collaborators
- eigen_centrality (advanced). 作者网络中作者的特征向量中心得分; 由eigen_centrality运算
赋值
作者协作网络或包指示网络的各种统计的data.frame,具体取决于attr(object,"perspective")是“author”还是“package”。统计输出的内容详见“详细”