【发布时间】:2021-09-10 22:24:54
【问题描述】:
我们通常使用utils::packageDescription 函数来检索任何本地包的DESCRIPTION 文件。不幸的是,比较不同包版本之间的说明文件并不容易。大多数情况下,我们希望获得不同包版本之间的依赖项差异(Depends/Imports/Suggests)。
如何实现这样的目标。
- 自我推销我的新CRAN包https://CRAN.R-project.org/package=pacs
【问题讨论】:
我们通常使用utils::packageDescription 函数来检索任何本地包的DESCRIPTION 文件。不幸的是,比较不同包版本之间的说明文件并不容易。大多数情况下,我们希望获得不同包版本之间的依赖项差异(Depends/Imports/Suggests)。
如何实现这样的目标。
【问题讨论】:
pacs CRAN 包中提供了我自己针对此类问题的解决方案。pacs::pac_compare_versions 可用于比较不同包版本之间的包依赖关系。pacs::pac_description 用于启用说明文件的下载适用于任何软件包版本或特定日期。
R CRAN 包支持函数。
比较一个包的依赖关系。
# by default c("Imports", "Depends", "LinkingTo") fields are considered
pacs::pac_compare_versions("dplyr", "0.8.1", "1.0.0")
#> Package Version.0.8.1 Version.1.0.0 version_status
#> 1 assertthat 0.2.1 <NA> -1
#> 2 BH 1.69.0-1 <NA> -1
#> 3 ellipsis <NA> 1
#> 4 generics <NA> 1
#> 5 glue 1.3.1 1.3.2 1
#> 6 lifecycle <NA> 0.2.0 1
#> 7 magrittr 1.5 1.5 0
#> 8 methods 0
#> 9 pkgconfig 2.0.2 <NA> -1
#> 10 plogr 0.2.0 <NA> -1
#> 11 R 3.2.0 3.2.0 0
#> 12 R6 2.4.0 -1
#> 13 Rcpp 1.0.1 <NA> -1
#> 14 rlang 0.3.4 0.4.6 1
#> 15 tibble 2.1.1 2.1.3 1
#> 16 tidyselect 0.2.5 1.1.0 1
#> 17 utils 0
#> 18 vctrs <NA> 0.3.0 1
版本或日期的原始说明文件。
head(pacs::pac_description("dplyr", "0.8.1"), 3)
#> $Type
#> [1] "Package"
#>
#> $Package
#> [1] "dplyr"
#>
#> $Title
#> [1] "A Grammar of Data Manipulation"
head(pacs::pac_description("dplyr", at = as.Date("2018-01-01")), 3)
#> $Type
#> [1] "Package"
#>
#> $Package
#> [1] "dplyr"
#>
#> $Version
#> [1] "0.7.4"
逐个字段比较DESCRIPTION文件。
x <- data.frame(`0.8.1` = I(pacs::pac_description("dplyr", "0.8.1")))
y <- data.frame(`1.0.0` = I(pacs::pac_description("dplyr", "1.0.0")))
head(merge(x, y, by = 0), 3)
#> Row.names X0.8.1 X1.0.0
#> 1 Author Hadley W.... Hadley W....
#> 2 Authors@R c(\nperson.... c(person....
#> 3 BugReports https://.... https://....
由reprex package (v2.0.1) 于 2021-09-11 创建
【讨论】: