【问题标题】:shinyApp with ui and server in separate files?带有ui和服务器的shinyApp在单独的文件中?
【发布时间】:2020-09-03 19:11:47
【问题描述】:

现在我的 shinyApp 正在运行四个单独的 R 文件。 app.R、server.R、ui.R 和 global.R。这显然是一种旧的做事方式,但我喜欢它组织我的代码的方式。

我需要在shinyApp()函数中使用onStart参数。由于我分离文件的方式,看起来 R 在 R Studio 中运行“运行应用程序”按钮时知道将四个文件一起加载。这意味着我的 app.R 文件仅包含 runApp()

我似乎无法将 onStart 参数与 runApp() 一起使用。当我尝试创建一个shinyApp(ui, server, onStart = test()) 对象并通过runApp() 传递它时,它找不到测试函数。

### in global.R
test <- function(){
  message('im working')
}
### in app.R
app <- shinyApp(ui, server, onStart = test())

runApp(app)

我在 R 文档中找到了这个。我不确定使用 global.R 文件是什么意思?

https://shiny.rstudio.com/reference/shiny/latest/shinyApp.html

非常感谢,我希望这个问题有意义。

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    据我了解,shinyAppDirshinyApp 都可以实现您想要的功能。你只需要正确使用它们。 如果您有 3 个文件结构,即 ui.Rserver.Rglobal.R。您应该使用shinyAppDir 而不是shinyApp。在global.R 中,您可以定义要全局运行的代码,如果它在一个函数中,您可以在同一个文件(即global.R)中定义然后调用该函数。为了使用shinyAppDir 运行它,您需要提供放置应用程序文件的目录。

    根据您共享的同一 shinyApp 参考,

    shinyAppDir(appDir, options = list())
    

    如果您想改用shinyApp,则需要将uiserver 放在同一个文件中,并将对象名称 传递给shinyApp 函数。在这里,如果你想全局运行一些代码,你需要先在函数在同一个文件中定义该代码,然后将该函数name作为@ 987654337@ 参数。如果您的函数名称是test,则需要将其传递为shinyApp(ui, server, onStart = test) 而不是test(),但更重要的是,您需要拥有所有3 个(uiserver,以及您的全局函数,即test ) 在同一个文件中。

    根据参考,

    shinyApp(ui, server, onStart = NULL, options = list(),   uiPattern = "/", enableBookmarking = NULL)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-25
      • 1970-01-01
      • 1970-01-01
      • 2012-11-03
      • 2015-11-23
      • 2014-03-23
      • 1970-01-01
      相关资源
      最近更新 更多