gpt4 book ai didi

r - 验证安装到 docker 容器中的 R 包

转载 作者:行者123 更新时间:2023-12-04 10:58:54 26 4
gpt4 key购买 nike

有没有人有任何最佳实践来验证 R 包是否已安装到 docker 容器中?我想将我的容器设置为在 CI 服务上运行,并验证我的包是否已安装,但由于我一直在本地构建它,所以日志似乎很难确定安装了哪些包,哪些没有安装。如果让 CI 服务为我做这件事,或者使用简单的批处理脚本来验证包是否已安装,那就太好了。

下面是我当前的 dockerfile:

FROM rocker/tidyverse:latest
RUN mkdir -p $HOME/.R
COPY R/Makevars /root/.R/Makevars

RUN apt-get update -qq \
&& apt-get -y --no-install-recommends install \
liblzma-dev \
libbz2-dev \
ed \
clang \
ccache \
default-jdk \
default-jre \
&& R CMD javareconf \
&& install2.r --error \
ggstance ggrepel \
rstan shinystan rstanarm \
###My pkgs
tidytext janitor corrr officer devtools pacman
tidyquant timetk tibbletime sweep broom prophet \
forecast prophet lime sparklyr rsparkling \
formattable httr rvest xml2 jsonlite \
textclean ggthemes naniar \
&& Rscript -e 'devtools::install_github(c("hadley/multidplyr","jeremystan/tidyjson","ropenscilabs/skimr"))' \
&& rm -rf /tmp/downloaded_packages/ /tmp/*.rds \
&& rm -rf /var/lib/apt/lists/*

最佳答案

将其保存到类似 package_check.R 的文件中,然后通过 Rscript 运行它的 Docker 行:

c("tidytext", "janitor", "corrr", "officer", "devtools", "pacman", "tidyquant", 
"timetk", "tibbletime", "sweep", "broom", "prophet", "forecast", "prophet",
"lime", "sparklyr", "rsparkling", "formattable", "httr", "rvest", "xml2",
"jsonlite", "textclean", "ggthemes", "naniar") -> chk_pkgs

suppressPackageStartupMessages(
sapply(chk_pkgs, require, character.only=TRUE, quietly=FALSE, warn.conflicts=FALSE)
) -> ret

missing_pkgs <- sort(names(which(ret == FALSE)))

if (length(missing_pkgs) > 0) {
warning("The following packages are not installed: %s",
paste0(sprintf(" - %s", missing_pkgs), collapse="\n"))
}

quit(save=FALSE, status=length(names) == 0, runLast = FALSE)

这会给你一个缺少列表的丢失包错误,并以非零退出状态退出脚本。

关于r - 验证安装到 docker 容器中的 R 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46902203/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com