比较不同版本的r包之间的DESCRIPTION文件



我们通常使用utils::packageDescription函数来检索任何本地包的DESCRIPTION文件。不幸的是,在不同的包版本之间比较DESCRIPTION文件并不容易。大多数情况下,我们希望在不同的包版本之间获得不同的依赖关系(依赖/导入/建议)。
如何实现这样的目标。

  • 我的新CRAN包的自我推广https://CRAN.R-project.org/package=pacs

pacsCRAN包中提供了我自己的解决方案。
pacs::pac_compare_versions可以用来比较不同版本包之间的依赖关系。
提供pacs::pac_description以允许下载任何包版本或特定日期的DESCRIPTION文件。
rcran包支持函数。

比较包的依赖关系。

# 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包(v2.0.1)于2021-09-11创建

最新更新