なぜ必要になったか
LambdaでRを動かそうかと思ったのだが如何せん全ての依存パッケージをまるっとzipにする必要があった。
Lambdaへは以下コードから使用しているパッケージの依存パッケージ名を全て取得し、あと、base,compiler,datasetsを入れればOK
コード
################################################################################
# Lambdaへアップする必要がある依存パッケージ一覧を出力
#
################################################################################
library(tools)
REQUIRE_LIBS <- list(
"R.utils",
"tuneR",
"jsonlite"
, "xml2"
, "aws.s3"
)
ALL_PKG <- available.packages()
funcDependencies <- function(libNm, all_pkg) {
depenVec <- package_dependencies(packages = libNm, all_pkg, which = "Imports", reverse = F)[[1]]
if (length(depenVec) > 0) {
depenVecTmp <- depenVec
for (depen in depenVecTmp) {
depenVec <- c(depenVec, funcDependencies(depen, all_pkg))
}
}
return (depenVec)
}
libs =c()
for(libNm in REQUIRE_LIBS) {
libs <- c(libs, libNm, funcDependencies(libNm, ALL_PKG))
}
createDownloadUrl <- function(libNm) {
return(paste0("https://cran.r-project.org/src/contrib/", libNm, "_", packageVersion(libNm), ".tar.gz"))
}
libs <- sort(unique(libs))
libs <- lapply(libs, createDownloadUrl)
cat(paste(c(paste0("---- 依存パッケージ:", length(libs), "件"), libs), collapse = "\n"))