r语言 - 将参数传递到 Shiny 服务器



我构建了一个闪亮的应用程序,允许用户导入基因数据并将其可视化。我希望用户能够将其数据的路径作为参数传递到服务器中。有什么办法可以做到这一点吗?路径只是传递到服务器函数的字符串。

我希望将其作为参数而不是其他解决方案传入的原因是,我目前正在创建此应用程序的 R 包,并且我将在包中有一个将启动该应用程序的函数。

此函数将如下所示:

runMyApp <- function() {
shiny::runApp(system.file("myapp", package="mypackage"))
}

有什么方法可以将参数传递到这个runApp函数中,然后该函数又传递到服务器中?

谢谢!

我没有对此进行广泛测试,但它似乎有效。

根据需要定义 Shiny 的uiserverinst/myapp.R(我假设变量有这些名称(, 但不要打电话给shinyApp. 然后在您的包中,您可以定义一个函数,例如:

launch_app(param, ...) {
file_path <- system.file("myapp.R", package = "mypackage")
if (!nzchar(file_path)) stop("Shiny app not found")
ui <- server <- NULL # avoid NOTE about undefined globals
source(file_path, local = TRUE)
server_env <- environment(server)
# Here you add any variables that your server can find
server_env$test_param <- "test"
server_env$param <- param
app <- shiny::shinyApp(ui, server)
shiny::runApp(app, ...)
}

然后,server中的任何函数都应该能够看到paramtest_param并使用它。

这也具有额外的优势,即服务器中的所有函数都将能够使用包中的任何未导出函数。

下面是如何在包中执行此操作的示例,此处定义了启动函数。

最新更新