r shiny app

时间:2017-08-19 15:56:30

标签: r shiny

这是一个简单的应用来说明我的问题。当我使用selectizeInput而未指定默认值时,主面板只显示错误消息。如果没有选择,我需要的是一个空图。如何修改我的代码?

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)

1 个答案:

答案 0 :(得分:1)

如果在selectizeInput中未选择任何内容,则输入的值为"",因此您在字符串eval(parse())上调用mtcars$,这是错误的语法。您不应该使用eval(parse()),而是在尝试绘制直方图之前验证输入值,例如在您的服务器中:

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

如果您不想显示消息,则可以在致电req(input$var)之前执行hist