首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >安装的R包有多老?

安装的R包有多老?
EN

Stack Overflow用户
提问于 2021-07-02 00:56:13
回答 3查看 39关注 0票数 1

使用一些R代码可以得到已安装的R包发布的年份吗?我可以得到这个版本,但是当这个版本发布的时候,我必须在互联网上查找它。背景:我在瑞士联邦统计局工作,一个小组正在努力获得更好的R环境(例如,我们正在使用2017年的dplyr版本0.7.4……并且无法安装更新的版本...)。

干杯

EN

回答 3

Stack Overflow用户

发布于 2021-07-02 01:17:02

您可以使用versions包来获取包版本的时间戳。该软件包从中提取软件包的已发布版本

代码语言:javascript
复制
versions::installed.versions("dplyr")
# [1] "1.0.7"
versions::available.versions("dplyr")
# $dplyr
# version       date available
# 1    1.0.7 2021-06-18      TRUE
# 2    1.0.6 2021-05-05      TRUE
# 3    1.0.5 2021-03-05      TRUE
# ...

包龄

因此,如果您想回答有关包期限的特定问题,可以执行以下操作:

代码语言:javascript
复制
how_old <- function(pkg, lib = .libPaths()[1], return_age = FALSE) {
    pkg_ver <- versions::installed.versions(pkgs = pkg, lib = lib)
    av_vers <- versions::available.versions(pkgs = pkg)
    pkg_dte <- subset.data.frame(
        x = as.data.frame(unname(av_vers)),
        subset = version == pkg_ver,
        select = date,
        drop = TRUE
    )
    pkg_dte <- as.Date(pkg_dte)
    if (return_age) {
        return(epocakir::dob2age(dob = pkg_dte))
    } else {
        return(pkg_dte)
    }
}

how_old("dplyr", return_age = TRUE)

结果

代码语言:javascript
复制
[1] "1123200s (~1.86 weeks)"

包创建

或者你想知道包是什么时候在本地安装的。

代码语言:javascript
复制
when_created <- function(pkg, lib = .libPaths()[1]) {
    # Package will always have DESCRIPTION file so that's a safe bet
    desc_file <- system.file("DESCRIPTION", package = pkg, lib.loc = lib)
    info <- fs::file_info(desc_file)
    info$birth_time
}

when_created("dplyr")

结果

代码语言:javascript
复制
# [1] "2021-06-25 08:47:21 BST"
票数 4
EN

Stack Overflow用户

发布于 2021-07-02 01:08:35

正如@Jonathan推荐的那样,如果包中有引用,那么您可以在引用中调用年份。

代码语言:javascript
复制
citation("dplyr")$year

另一种方法是从包的可用版本列表中获取日期。

代码语言:javascript
复制
devtools::install_github("https://github.com/cran/versions")
library(versions)

x <- versions::available.versions(c("dplyr", "ggplot2"))

version_year <-
  function(x,
           package.name = "",
           version = "") {
    pckg <- x[[package.name]]
    row <- which(pckg$version == version)
    return(pckg$date[row])
  }

version_year(x, "ggplot2", version = "2.0.0")
#[1] "2015-12-18"
票数 2
EN

Stack Overflow用户

发布于 2021-07-02 01:16:22

作为最后的手段,您可以找出包是何时通过其DESCRIPTION创建的

代码语言:javascript
复制
packageDescription(pkg)$Packaged

事实上,如果没有提供其他日期(无论是作为Date/Publication还是通过显式的CITATION文件),citation都会回到这个字段。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68214167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档