मैं केवल चयनित कॉलम के साथ अपने डेटा सेट में कई क्लस्टरिंग एल्गोरिदम फिट करना चाहता हूं। कृपया मेरा परीक्षण नीचे देखें:

    library(rshiny)
    data(mtcars)
      if (interactive()) {
  shinyApp(
    ui = fluidPage(
      sliderInput('num',label='Insert Number of clusters',value = 3,min = 2,max = 10,step = 1),
      varSelectInput("variables", "Variables:", mtcars, multiple = TRUE),
      selectInput('Model','Model:',choices = c('K-Means','Others')),
      tableOutput("data")
    ),
    server = function(input, output) {
      output$data <- renderTable({
        if (length(input$variables) == 0) return(mtcars)
        mtcars %>% dplyr::select(!!!input$variables)
        if (input$Model == 'K-means'){
          autoplot(kmeans(df_clean,input$num),data=df_clean,label=TRUE,label.size=3)
        }
      }, rownames = TRUE)
    }
  )}

यह मुझे फिट करने के लिए कॉलम और मॉडल के प्रकार का चयन करने में सक्षम बनाता है, लेकिन मैं डैशबोर्ड पर क्लस्टरिंग एल्गोरिदम नहीं देख पा रहा हूं।

इसके साथ किसी भी मदद की सराहना की जाएगी।

0
user86907 14 सितंबर 2020, 07:38

1 उत्तर

सबसे बढ़िया उत्तर

आपको विभिन्न प्रकार के आउटपुट को अलग करने की आवश्यकता है। आपके पास एक ही आउटपुट में टेबल आउटपुट और प्लॉट नहीं हो सकता है। मैंने एक उदाहरण बनाया कि यह साजिश के लिए एक conditinalPanel के साथ कैसे काम कर सकता है

library(rshiny)
data(mtcars)
if (interactive()) {
  shinyApp(
    ui = fluidPage(
      sliderInput('num',label='Insert Number of clusters',value = 3,min = 2,max = 10,step = 1),
      varSelectInput("variables", "Variables:", mtcars, multiple = TRUE),
      selectInput('Model','Model:',choices = c('K-Means','Others')),
      column(
        width = 4,
        tableOutput("data")
      ),
      column(
        width = 6,
        conditionalPanel(
          condition = "input.Model == 'K-Means'",
          plotOutput("cluster")
        )
      )
    ),
    server = function(input, output) {
      
      df_clean <- reactive({
        if (length(input$variables) == 0) return(mtcars)
        mtcars %>% 
          dplyr::select(!!!input$variables)
      })
      
      output$data <- renderTable({
        df_clean()
      }, rownames = TRUE)
      output$cluster <- renderPlot({
        req(input$Model == 'K-Means')
        
        axises <- unlist(c(input$variables,"mpg", "cyl"))[1:2]
        cluster <- kmeans(df_clean(),input$num)
        ggplot(df_clean(), aes_string(x = axises[[1]],y = axises[[2]] )) +
          geom_point(colour = cluster$cluster)
      })
    }
  )}
1
Bertil Baron 16 सितंबर 2020, 15:31