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

时间:2019-03-15 08:55:06

标签: 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")
}

shinyApp(ui = ui, server = server)

此代码抱怨Warning: Error in observeEventExpr: object 'input' not found。从理论上讲,我可以将input变量作为函数参数传递(我现在打算做的事情),但是要与函数参数(inputoutputsession混为一谈感觉真的很乱。

除了将所有这些运行时变量作为参数传递给此类构建器函数之外,还有其他方法吗?

处理闪亮的生成器功能时的最佳做法是什么?

编辑:

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

1 个答案:

答案 0 :(得分:1)

我认为一团糟正在使用 input 在服务器外,请尝试以下操作:

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)

这里的线索是将您的函数放入服务器中。 希望对您有帮助