我们通常使用utils::packageDescription
函数来检索任何本地包的DESCRIPTION文件。不幸的是,在不同的包版本之间比较DESCRIPTION文件并不容易。大多数情况下,我们希望在不同的包版本之间获得不同的依赖关系(依赖/导入/建议)。
如何实现这样的目标。
- 我的新CRAN包的自我推广https://CRAN.R-project.org/package=pacs
在pacs
CRAN包中提供了我自己的解决方案。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创建