Передача только определенных переменных блестящему приложению при сборке пакета - PullRequest
0 голосов
/ 16 ноября 2018

Я создаю пакет, в который входит мое блестящее приложение.

Чтобы сделать это, я создаю оболочку вокруг моего вызова «глянцевый :: runApp», но, к сожалению, блестящее приложение использует глобальные переменные рабочей области. Я хочу, чтобы функция-обертка использовала переменные, которые я даю функции (и ошибку, если не дополнена), и использую их для блеска. Вот, например, для этого нужны x, y и z (значение по умолчанию):

Shiny_wrapper <- function(x,y,z=TRUE){
    shiny::runApp(appDir = system.file("shinyApp", package = "WebFlood"))
}

Я работал над этим, назначая переменные глобальному рабочему пространству, но я не думаю, что это правильный подход:

Shiny_wrapper <- function(x,y,z=TRUE){
    x<<-x
    y<<-y
    z<<-z
    shiny::runApp(appDir = system.file("shinyApp", package = "WebFlood"))
}

Как заставить мой бриллиант использовать переменные, которые я передаю оболочке?

1 Ответ

0 голосов
/ 16 ноября 2018

Вы можете определить окружение в вашем пакете и использовать его для передачи некоторых переменных.

PKGENVIR <- new.env(parent=emptyenv()) 

#' @export
Shiny_wrapper <- function(x,y,z=TRUE){
    PKGENVIR$x <- x
    PKGENVIR$y <- y
    PKGENVIR$z <- z
    shiny::runApp(appDir = system.file("shinyApp", package = "WebFlood"))
}

А потом в блестящем приложении (в global.R или server.R):

x <- WebFlood:::PKGENVIR$x 
...