Как я могу получить более одного графика из нескольких выбранных элементов в флажке? - PullRequest
0 голосов
/ 17 октября 2019

Доброе утро, в свою панель инструментов я установил флажок, чтобы выбрать один или несколько выходных данных для отображения. В пользовательском интерфейсе я установил флажок и на сервере все условия (если ... еще, если ...). Когда я запускаю приложение, оно показывает мне только график, даже когда я выбираю несколько вариантов в поле. Кроме того, это дает мне эту ошибку в консоли:

"Предупреждение в if (input $ checkGroup == 1) {: условие имеет длину> 1, и будет использоваться только первый элемент" *

Полагаю, это говорит о том, что я не могу справиться с более чем одним выбором, как мне просмотреть все выбранные графики?

 ui <- fluidPage(titlePanel("IULM Dashboard"), sidebarLayout(sidebarPanel(
 selectInput("selection", "Choose a Dataset:",
          choices = datasets), 
  ("Barplot","Network",'Wordcloud', "LDA-Latent topic"),
           #selected = "Barplot", inline = TRUE),
   checkboxGroupInput("checkGroup", label = ("Checkbox group"), 
                 choices = list("Barplot" = 1, "Network" = 2), selected = 1, inline = TRUE),
   actionButton("update", "Change"))    
 , mainPanel(   
   uiOutput("plot")))

  server <- function(input, output){


datasetInput <- reactive({ 
  input$update

  isolate({
    withProgress({
      setProgress(message = "Processing corpus...")
      getTermMatrix(input$selection)

    })
  })
})
output$plot <- renderUI({

  if(input$checkGroup== 1 ){
 output$barplot <- renderPlot({
v=datasetInput()
dtm1 = removeSparseTerms(v, 0.992)
freq <- colSums(as.matrix(dtm1))
wf = data.frame(term = names(freq), occurrences = freq)
wf <- wf[order(wf$occurrences, decreasing = TRUE),]
wf2 = subset(wf[1:input$maxB,]) 
ggplot(wf2, aes(term, occurrences)) +
  geom_bar(stat="identity", fill="darkred", colour="black", width=0.5)+
  theme(axis.text.x=element_text(angle=45, hjust=1))+
  ggtitle("Word barplot")})
plotOutput(outputId = "barplot", width = 600, height = 400)
}

  else if(input$checkGroup== 2 ){
  output$network <- renderPlot({
v=datasetInput()
dtm1 = removeSparseTerms(v, 0.992)
rowTotals <- apply(dtm1 , 1, sum) 
dtm2   <- dtm1[rowTotals> 0, ]
wdtm <- weightTf(dtm2)
dtm1 <- removeSparseTerms(wdtm, 0.96)
dfm <- as.dfm(dtm1)
textplot_network(dfm, min_freq = 0.5, omit_isolated = TRUE,
                 edge_color = "#1F78B4", edge_alpha = 0.5, edge_size = 2,
                 vertex_color = "#4D4D4D", vertex_size = 2,
                 vertex_labelsize = 5, offset = NULL)})
  plotOutput(outputId = "network", width = 600, height = 600)}
  })
  }

  shinyApp(ui = ui, server = server)

1 Ответ

0 голосов
/ 17 октября 2019

Можно попробовать

library(shiny)
ui <- fluidPage(

      sidebarLayout(
        sidebarPanel(
            checkboxGroupInput("variable", "Variables to show:",
                               c("Cylinders" = "cyl",
                                 "Transmission" = "am",
                                 "Gears" = "gear"))
        ),
        mainPanel(
            uiOutput("plots")
        )))

server <- function(input, output) {

    output$plots <- renderUI({
        req(input$variable)
        output = tagList()

        if(any(input$variable %in% "cyl")){
        tmp <- mtcars$cyl
        output[[1]] <- renderPlot({plot(mtcars$mpg, tmp)})
        }
        if(any(input$variable %in% "am")){
        tmp <- mtcars$am
         output[[2]] <- renderPlot({boxplot(mtcars$mpg, tmp)})
        }

        output

    })
}
shinyApp(ui = ui, server = server)
...