构建包时仅将特定变量传递给闪亮的应用程序
Pass only specific variables to a shiny app when building a package
我正在构建一个包,其中包含我闪亮的应用程序。
为此,我围绕我的 "shiny::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"))
}
如何让我闪亮使用我传递给包装器的变量?
你可以在你的包中定义一个环境,并用它来传递一些变量。
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
我正在构建一个包,其中包含我闪亮的应用程序。
为此,我围绕我的 "shiny::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"))
}
如何让我闪亮使用我传递给包装器的变量?
你可以在你的包中定义一个环境,并用它来传递一些变量。
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