R 闪亮:为什么我无法从 server.R 访问另一个文件中定义的函数?

问题描述

如何在不同的文件中定义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 = TRUElocal 确定源代码将添加到哪个环境。在这种情况下,您需要在服务器功能的环境中使用它。

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 元素的更多信息。但是,手册中没有提及它,谷歌也没有直接点击。我只能说它是这样工作的,而当我删除它时却没有。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...