问题描述
如何在不同的文件中定义server.R's
本地函数并访问服务器文件中的函数?
每次我尝试在另一个文件中定义反应式时,都会出现以下错误:
reactive:plotScatter 中的错误:找不到对象“输入”
在 server.R 文件中定义和声明函数时,我没有收到此错误,所以我假设这是因为我如何分割文件。
这就是我访问函数的方式;
source("filename.R")
我假设我应该能够访问 filename.R
中定义的所有模块,而无需执行任何其他操作。
我对闪亮很陌生,任何帮助将不胜感激。
解决方法
关于您的具体情况很难说太多。我能做的就是向您展示它在我的系统上是如何工作的。我有一个更大的应用程序,它被分成几个文件。
在“app.R”中,我对包含服务器和 ui 函数的文件进行了两次源调用。
# ...
source("getui.R",local = TRUE)
source("getserver.R",local = TRUE)
#RUN
shinyApp(ui = ui,server = server)
在“getserver.R”文件中,我获取了服务器的其他部分。源文件包含所有代码,包括观察者和反应值。现在我才使用 source(...)$value
访问源文件的内容。我还设置了 local = TRUE
。 local
确定源代码将添加到哪个环境。在这种情况下,您需要在服务器功能的环境中使用它。
server <- shinyServer(function(input,output,session) {
source(file.path("server","tab_setup_srv.R"),local = TRUE)$value
source(file.path("server","tab_about_srv.R"),local = TRUE)$value
# further code
})
我试图了解有关 $value
元素的更多信息。但是,手册中没有提及它,谷歌也没有直接点击。我只能说它是这样工作的,而当我删除它时却没有。