Я пытаюсь создать блестящее приложение на основе модулей, и мне нужно добавить highchart
внутри модуля, где график обновляется, когда пользователь выбирает значение из раскрывающегося списка selectInput
. Идея состоит в том, что, когда пользователь выбирает значение из поля selectInput
в пользовательском интерфейсе, это фильтрует набор данных, а затем highchart
обновляется. Проблема в том, что я не могу передать отфильтрованный набор данных в myModuleServer
(см. Ниже). Как я могу это сделать?
Это набор данных:
df <- data.frame(label = c('A','B'), value = c(10,25))
Это модули пользовательского интерфейса и сервера:
myModuleUI <- function(id) {
ns <- NS(id)
tagList(
textOutput(ns("title")),
textOutput(ns("text")),
highchartOutput(ns("graph")))}
myModuleServer <- function(input, output, session, action, dataset) {
output$title <- renderText({paste0("You selected letter: ",action())})
output$text <- renderText({paste0("In the dataset the letter selected corresponds to number: ", dataset()$value)})
output$graph <- renderHighchart({hchart(dataset(), 'bar', hcaes(x=dataset()$label, y=dataset()$value))})
}
Ниже представлены компоненты пользовательского интерфейса и сервера блестящего приложения:
ui <- fluidPage(
fluidRow(
column(width = 3, wellPanel(selectInput('dummy', 'Select a letter', choices = c('A', 'B')))),
column(width = 6, myModuleUI("module1")))
)
server <- function(input, output, session) {
reactiveData <- reactive({input$dummy})
reactiveDataSet <- reactive({df %>% filter(label == input$dummy)})
callModule(myModuleServer, 'module1', action = reactiveData, dataset = reactiveDataSet)
}
shinyApp(ui, server)