我想知道为什么当我从Rstudio启动我的应用程序时,global.R无法启动。 据我了解,似乎在启动我的应用程序时必须运行一次global.R,但是Rstudio却给我一个错误,它找不到在global.R文件中定义的函数。 在使用ctl + alt + r手动运行global.R之后,我可以启动我的应用程序,它可以识别该功能,并且在我使用R会话的过程中都能正常运行。我不是在网络上发布,而是在本地发布。 我错过了什么吗? 谢谢。
答案 0 :(得分:0)
(R版本3.5.2和有光泽的1.2)
仅当闪亮的应用程序由global.R
和server.R
组成时,ui.R
的内容才可用。如果应用程序由唯一的global.R
文件组成,则app.R
的内容将被忽略。
在app.R
和server.R
中拆分ui.R
解决您的问题。
答案 1 :(得分:0)
既然 OP 询问为什么在架构仅依赖单个 global.R
时不读取 app.R
,这是因为应用程序的启动方式。
如果是通过以下方式启动的:
shinyApp(ui = ui, server = server)
然后应用程序在没有预先运行任何东西的情况下考虑这两个函数,即忽略 global.R
内容。但是,可以将 onStart
参数提供给 shinyApp
以在应用程序启动之前运行某些内容,它的描述解决了很多混乱:
onStart:在应用实际运行之前将被调用的函数。这仅适用于 ShinyAppObj,因为在 ShinyAppDir 的情况下,一个 global.R 文件可用于此目的。
在我看来,当应用程序拆分为 server.R
和 ui.R
时,global.R
会通过通过 shinyAppDir
运行应用程序自动包含在内。
如果有人想严格使用单个 app.R
代码文件并在启动应用程序之前执行一些例程,我找到的解决方案是:
onStart
调用中修改 shinyApp
参数global.R
为 @tic-toc-choc points out