Как выполнить блестящие модули последовательно? - PullRequest
0 голосов
/ 28 апреля 2018

Я пытаюсь создать приложение с блестящими модулями. Эти модули должны выполняться последовательно, и каждый модуль основывается на одном и том же объекте, как показано в примере ниже:

QG <- callModule(loadInput, "first")
QG <- callModule(addParameter, "second", QG) 
QG <- callModule(analyze, "third",  QG)

Я обертываю возвращаемые значения реактивным выражением, и я пытался иметь уникальное имя для каждого выхода модуля (пример ниже), но это не работает.

QG1 <- callModule(loadInput, "first")
QG2 <- callModule(addParameter, "second", QG1) 
QG3 <- callModule(analyze, "third",  QG2)

Какой лучший способ сделать это?

Заранее спасибо.

1 Ответ

0 голосов
/ 29 апреля 2018

Трудно решить эту проблему, не имея полного приложения, доступного для тестирования, но эту логику я бы использовал при решении проблемы:

values <- reactiveValues(
  QG1 = NULL,
  QG2 = NULL,
  QG3 = NULL
)

values$QG1 <- callModule(loadInput, "first")

observeEvent(values$QG1, {
  values$QG2 <- callModule(addParameter, "second", values$QG1)
})

observeEvent(values$QG2, {
  values$QG3 <- callModule(analyze, "third", values$QG2)
})

В первом блоке мы создаем несколько реактивных значений, которые будут содержать выходные данные каждого из модулей. Мы инициализируем каждый из них в NULL, так как NULL по умолчанию игнорируется observeEvent().

Затем мы можем вызвать первый модуль и установить возвращаемый результат равным values$QG1. loadInput не нужно возвращать реактивное выражение, на самом деле, у меня не было бы никаких модулей, возвращающих реактивные выражения. Когда значение values$QG1 изменяется, срабатывает первый observeEvent(), который, в свою очередь, изменяет значение values$QG2. Наконец, изменение значения values$QG2 вызовет вторую observeEvent(), которая в конечном итоге возвращает его значение values$QG3.

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