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

是否存在跨平台且健壮的CRAN tar.gz包下载工具函数?

寻找跨平台、无需维护的R包源码下载工具

我搜了一圈没找到能直接开箱即用的解决方案,大部分讨论都围绕包安装展开,而我关注的是包下载。自己编写了一个小型工具函数,但希望找到更具跨平台性、更健壮且无需自行维护的工具。

我是否遗漏了什么,还是这类工具根本不存在?

自定义工具函数

get_pack_tar_gz <- function(package, version, destination = ".") {
  package_tar_gz_string <- paste0(package, "_", version, ".tar.gz")
  latest_version_url <- paste0("https://cran.r-project.org/src/contrib/",
                               package_tar_gz_string)
  archive_version_url <- paste0("https://cran.r-project.org/src/contrib/Archive/",
                                package,
                                "/",
                                package_tar_gz_string)
  
  latest_return <- suppressWarnings(
    system(paste0("wget --spider ", latest_version_url, " 2> /dev/null"), intern = TRUE)
  )
  latest_return_status <- attributes(latest_return)$status
  
  if(length(latest_return_status) == 0) {
    system(paste0("wget -q https://cran.r-project.org/src/contrib/",
                  package_tar_gz_string,
                  " -P ",
                  destination))
  } else if(latest_return_status == 8) {
    system(paste0("wget -q https://cran.r-project.org/src/contrib/Archive/",
                  package,
                  "/",
                  package_tar_gz_string, 
                  " -P ",
                  destination))
  } else {
    stop("Unexpected!")
  }
  if(! file.exists(paste0(destination, "/", package_tar_gz_string))) {
    stop("No file retrieved!")
  }
}

调用示例

get_pack_tar_gz(package = "tidyr", version = "1.3.1")
get_pack_tar_gz(package = "tidyr", version = "0.1")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:05:04