Изменить один выход с разными модулями - PullRequest
0 голосов
/ 29 апреля 2020

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

Однако, поскольку у меня есть одна таблица для рендеринга (то есть только одна tableOutput) и так как я хотел бы, чтобы на эту таблицу влияли все модули, я не помещал ее в конкретный модуль пользовательского интерфейса, но я поместил один renderTable на server модуль.

Это небольшой пример, воспроизводящий мою ситуацию:

library(shiny)

mod_select_ui <- function(id){
  ns <- NS(id)
  tagList(
    selectInput(ns("test_select"), "choose among mtcars", names(mtcars))
  )
}

mod_select_server <- function(input, output, session){
  output$test_mtcars <- renderTable({
    mtcars[[input$test_select]]
  }) 
}

mod_checkbox_ui <- function(id){
  ns <- NS(id)
  tagList(
    checkboxInput(ns("test_checkbox"), "only head of data")
  ) 
}

mod_checkbox_server <- function(input, output, session){
  observe({
    if(input$test_checkbox){
      output$test_mtcars <- renderTable({
        head(mtcars)
      })
    }
  })
}

ui <- fluidPage(
  mod_checkbox_ui("1"),
  mod_select_ui("1"),
  tableOutput("test_mtcars")
)

server <- function(input, output, session) {

  callModule(mod_select_server, "1")
  callModule(mod_checkbox_server, "1")

}

shinyApp(ui, server)

В этом примере есть несколько проблем. Во-первых, ничего не отображается, потому что output$test_mtcars находится в server модулях, и, следовательно, ожидается, что в модуле пользовательского интерфейса будет иметься дополнительный tableOutput. Во-вторых, я не уверен, что оба renderTable будут приняты во внимание.

Можно ли модифицировать этот единственный tableOutput несколькими модулями? Объединение различных модулей пользовательского интерфейса вместе не возможно (я разделил входы в модулях именно потому, что их у меня много).

Также задан вопрос в сообществе RStudio

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