R在源上下文中调用(观察者生成器)函数

R在源上下文中调用(观察者生成器)函数,r,function,shiny,R,Function,Shiny,下面是一个示例代码: library("shiny") createObserver <- function(id) { observeEvent(input[[id]], { message(paste("button", id, "pushed")) }) } ui <- actionButton("foo", "bar") server <- function(input, output) { createObserver("foo") } s

下面是一个示例代码:

library("shiny")

createObserver <- function(id) {
  observeEvent(input[[id]], {
    message(paste("button", id, "pushed"))
  })
}

ui <- actionButton("foo", "bar")

server <- function(input, output) {
  createObserver("foo")
}

shinyApp(ui = ui, server = server)
此代码抱怨observeEventExpr中的警告:错误:未找到对象“输入”。理论上,我可以将输入变量作为函数参数传递,我现在计划做的就是这样,但是处理函数参数输入、输出、会话感觉非常混乱

没有其他方法可以将所有这些运行时变量作为参数传递给构建器函数吗

在处理闪亮的生成器函数时,最佳做法是什么

编辑:


我想我真的必须将输入、输出和任何潜在的reactiveValue对象传递给函数。

我认为混乱是在使用服务器外的输入,请尝试以下方法:

library("shiny")
ui <- actionButton("foo", "bar")

server <- function(input, output) {
  createObserver <- function(id) {
    observeEvent(input[[id]], {
      message(paste("button", id, "pushed"))
    })
  }
  createObserver("foo")
}
shinyApp(ui = ui, server = server)
这里的线索是将您的函数放在服务器中。
希望有帮助

不幸的是,该函数似乎必须在全局上下文中定义。