R Блестящий фильтр с checkboxInput

#r #shiny

#r #блестящий

Вопрос:

У меня возникли проблемы с фильтрацией моего набора данных в моем блестящем приложении на основе checkboxInput.

Я предполагаю, что проблема заключается в неправильном форматировании checkboxInput.

Здесь у меня также есть примерный код:

 x <- as.data.frame(matrix(data = 1:20,ncol=2))
colnames(x) <- c("Test1","Test2")

ui <- fluidPage(
checkboxGroupInput("icons", "Choose icons:", choices = 1:10),
textOutput("test"))

server <- function(input, output, session) {
output$test <- renderText({
  req(input$icons)
  tmp_input <- as.numeric(as.vector(input$icons))
  tmp <- x %>%
    dplyr::filter(Test1 %in% tmp_input)
  return(tmp)
})
}  
shinyApp(ui, server)
  

Сообщение об ошибке: аргумент 1 (тип ‘list’) не может быть обработан ‘cat’

Большое спасибо за вашу помощь!

Ответ №1:

tmp это data.frame (и фактически также список). Вы возвращаете это, чтобы получить его отрисовку с помощью renderText , которая использует cat . Но cat ожидает атомарные векторы и не может обрабатывать списки. Попробуйте комбинацию renderPrint и verbatimTextOutput :

 library(shiny)
library(dplyr)
x <- as.data.frame(matrix(data = 1:20,ncol=2))
colnames(x) <- c("Test1","Test2")

ui <- fluidPage(
  checkboxGroupInput("icons", "Choose icons:", choices = 1:10),
  verbatimTextOutput("test"))

server <- function(input, output, session) {
  output$test <- renderPrint({
    req(input$icons)
    tmp_input <- as.numeric(as.vector(input$icons))
    tmp <- x %>%
      dplyr::filter(Test1 %in% tmp_input)
    return(tmp)
  })
}  
shinyApp(ui, server)