Использование Paste для получения входных данных из checkboxGroupInput, агрегированных и разделенных запятой - PullRequest
0 голосов
/ 04 мая 2019

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

Я попробовал приведенный ниже код, но он не работает и выдает ошибку.


library(shiny)
library(shinydashboard)

ui <- dashboardPage(
  dashboardHeader(title = "Basic Dashboard"),

  dashboardSidebar(

    checkboxGroupInput(inputId="variable", label="OG to show:", 
                       choiceNames=c("All","CMT","FS","HPS","PRD","RES"),
                       choiceValues=c("All","CMT","FS","HPS","PRD","RES"),
                       selected = NULL,
                       inline = T
                       #, multiple = T,selectize = T),
    )),  

    dashboardBody(  

      textOutput('table1')      

    ))

server <- function(input, output) {

  OG <- reactive({
    switch(input$variable,
           "All" = 1,
           "CMT" = 2,
           "FS" = 3,
           "HPS" = 4,
           "PRD" = 5,
           "RES" = 6)
  })

 OG1 <- reactive({icons1 <- paste(OG(), collapse = ",")})

 output$table1 <-renderText({OG1()})

}

runApp(shinyApp(ui, server),launch.browser = TRUE)

Ожидаемый результат - 2,3, .... В соответствии с выбором из флажка он должен дать мне # через запятую.

1 Ответ

1 голос
/ 04 мая 2019

Вы можете использовать req() и sapply() для решения проблем.

Чтобы не использовать NULL, если не выбрана ни одна опция, используйте req(). Чтобы передать вектор входных данных в switch(), вы можете использовать sapply().

Воспроизводимый пример:

library(shiny)
library(shinydashboard)

ui <- dashboardPage(
  dashboardHeader(title = "Basic Dashboard"),

  dashboardSidebar(
    checkboxGroupInput(inputId = "variable", label = "OG to show:", 
                       choiceNames = c("All","CMT","FS","HPS","PRD","RES"),
                       choiceValues = c("All","CMT","FS","HPS","PRD","RES"),
                       selected = NULL, inline = T
    )
  ),  

  dashboardBody(  
    textOutput('table1')      
  ))

server <- function(input, output) {

  OG <- reactive({
    req(input$variable)
    unname(sapply(input$variable, switch,
           "All" = 1, "CMT" = 2, "FS" = 3, "HPS" = 4, "PRD" = 5, "RES" = 6))
  })

  output$table1 <-renderText({
    print(OG() %in% 2:6)
  })
}
runApp(shinyApp(ui, server))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...