У меня есть работающий контейнер с изображением RStudio и мой собственный предустановленный пакет.Моя задача состоит в том, чтобы вызывать разные функции из пакета одну за другой - выход из одной функции является входом для других функций.Я не хочу делать это так: fun1(x) %>% fun2(x) %>% ... %>% funN(x)
.Я хочу, чтобы это работало так:
out1 <- fun1(x)
out2 <- fun2(out1)
...
funN(outN-1)
Причина, по которой я хотел бы сделать это, состоит в том, что я хотел бы вызывать эти функции как отдельные docker exec
команды для работающего контейнера.Я планирую преобразовать эти команды в отдельные задания Jenkins.
Я попробовал docker exec ...
команды, но потерпел неудачу на втором шаге.На первом этапе функция fun1
создает объект R out1
.Но out1
недоступен для второго docker exec
вызова, т. Е. Это не работает:
docker run --name=my_container -d my_image (ok)
docker exec -it my_container Rscript main.R (ok)
docker exec -it my_container R "-e my_package::fun2(out1)" (not ok - object out1 not found)
, где main.R
примерно так:
library(my_package)
out1 <- my_package::fun1()
Вдругими словами, следующий docker exec
является продолжением предыдущего - все объекты, живущие в рабочем пространстве R после завершения предыдущего шага, должны быть доступны для функций на следующем шаге.Является ли это возможным?Я хотел бы избежать помещения всех функций (шагов) в один R-скрипт.Любая помощь будет принята с благодарностью.