R блестящий вызов (построитель наблюдателя) функционирует в контексте источника - PullRequest
0 голосов
/ 15 марта 2019

Вот пример кода:

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 в качестве аргумента функции (что я планирую сделать прямо сейчас), но это манипулирование с аргументами функции (input, output, session) кажется действительно беспорядочным.

Нет ли другого способа передать все эти переменные времени выполнения в качестве аргументов функциям-сборщикам, подобным этим?

Какова лучшая практика при работе с блестящими функциями построения?

EDIT:

Полагаю, мне действительно нужно передать функции, вводу и выводу любой потенциальный объект реактивный_значение.

1 Ответ

1 голос
/ 15 марта 2019

Я думаю, что в беспорядке используется вход вне сервера, попробуйте вместо этого:

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)

Ключ к разгадке - разместить вашу функцию внутри сервера.Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...