2017-08-19 1 views
0

angegeben ist Hier ist eine einfache App, um mein Problem zu veranschaulichen. Wenn ich selectizeInput verwende, ohne den Standardwert anzugeben, zeigt das Mainpanel einfach eine Fehlermeldung an. Was ich brauche, ist ein leerer Plot, wenn nichts ausgewählt wird. Wie ändere ich meinen Code?Fehlermeldung, wenn kein Standardwert in selectizeInput in r glänzend App

library(shiny) 
library(datasets) 


ui <- fluidPage(

    sidebarLayout(
     sidebarPanel(
      selectizeInput('var', 'choose variable', 
          choices = names(mtcars), 
          options = list(
           placeholder = 'Please select an option below', 
           onInitialize = I('function() { this.setValue(""); }')) 
          ) 

     ), 
     mainPanel(
      plotOutput('hist') 
     ) 
    ) 

) 


server <- function(input, output) { 

    output$hist <- renderPlot ({ 
     hist (eval(parse(text=(paste0('mtcars$', input$var))))) 
    }) 
} 

shinyApp(ui, server) 

Antwort

1

Wenn nichts in der selectizeInput ausgewählt wird, ist der Wert des Eingangs "", so dass Sie eval(parse()) auf der Saite mtcars$ aufrufen, die schlechte Syntax ist. Sie sollten eval(parse()) nicht verwenden, aber den Eingabewert überprüfen, bevor Sie versuchen, das Histogramm zu plotten, z. in Ihrem Server:

output$hist <- renderPlot ({ 
    validate(need(input$var, 'Choose a variable!')) 
    hist(x = mtcars[[input$var]]) 
}) 

Wenn Sie nicht wollen, um eine Nachricht anzuzeigen, können Sie req(input$var) kurz vor hist aufrufen.

+0

Vielen Dank! eine Folgefrage: Warum brauchen Sie doppelte eckige Klammern um auf die Variable zuzugreifen? – zesla

+0

Gern geschehen, bitte akzeptieren Sie meine Antwort, wenn es Ihr Problem löst. Für die data.frame-Unterteilung ist es so, weil data.frames als Liste bezeichnet werden, so dass Sie mit $ oder '[[' 'like with list '' auf das Element zugreifen können. Sie könnten 'mtcars [, iput $ var]' auch tun. Schau dir dieses Cheatsheet an, es ist gut erklärt: http://github.com/rstudio/cheatsheets/raw/master/source/pdfs/base-r.pdf – Victorp

Verwandte Themen