是否存在跨平台且健壮的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
相关产品推荐
相关产品推荐

