You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中获取CRAN上有更新版本的包的DataFrame

在R语言中获取CRAN可更新包的DataFrame

你可以通过以下自定义函数实现需求,核心利用R内置的utils::old.packages()来对比本地已安装包与CRAN上的最新版本:

check_outdated_packages <- function() {
  # 指定CRAN镜像,确保能获取最新包信息
  cran_repo <- "https://cloud.r-project.org/"
  # 获取所有过时包的对比数据
  outdated_data <- utils::old.packages(repos = cran_repo)
  
  # 处理无过时包的情况,返回空结构匹配的DataFrame
  if (is.null(outdated_data)) {
    return(data.frame(
      package = character(),
      installed_version = character(),
      latest_cran_version = character(),
      stringsAsFactors = FALSE
    ))
  }
  
  # 提取需要的字段并重命名列
  result_df <- as.data.frame(outdated_data, stringsAsFactors = FALSE)
  result_df <- result_df[, c("Package", "Installed", "ReposVer")]
  colnames(result_df) <- c("package", "installed_version", "latest_cran_version")
  
  # 可选:转换为data.table格式,匹配示例的输出样式
  if (requireNamespace("data.table", quietly = TRUE)) {
    result_df <- data.table::as.data.table(result_df)
  }
  
  return(result_df)
}

使用示例

df <- check_outdated_packages()
df

输出示例:

package installed_version latest_cran_version
      <char>            <char>              <char>
1: reactable             0.3.0               0.4.4

说明

  • old.packages()会自动扫描本地已安装包,对比CRAN镜像上的版本,返回过时包的详细信息
  • 函数中指定了CRAN云镜像,你也可以替换为其他国内镜像以提升访问速度
  • 如果没有需要更新的包,函数会返回一个结构匹配的空DataFrame,避免报错

内容的提问来源于stack exchange,提问作者Vlad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:43:17