问题在于
switch
和
validate
陈述
假设根据您的输入$dropDownValue,您希望返回一个或另一个数据集。如果
iris
return datasets::iris
,则需要以下语句。
switch(input$dropDownValue,
iris = datasets::iris,
cars = datasets::cars)
验证
如果第一条语句的计算结果为,则停止函数的执行并添加验证消息
FALSE
。
你的情况应该是
validate(need(input$var != "Sexual Orientation", "Data Unavailable"))
data <- switch(input$var,
"Housing Status" = hmlweightak,
"Sex" = sexweightak,
[...]
)
有关使用的示例,请参见下面的代码
验证
和
转换
。
library(shiny)
library(datasets)
ui <- fluidPage(
selectInput("dropDownValue", "Data", c("no data", "iris", "cars")),
mainPanel(
plotOutput("plot")
)
)
server <- function(input, output) {
data <- reactive({
validate(
need((input$dropDownValue == "iris" || input$dropDownValue == "cars"), "Please select a data set")
)
switch(input$dropDownValue,
iris = datasets::iris,
cars = datasets::cars)
})
output$plot <- renderPlot({
hist(data()[, 1])
})
}
shinyApp(ui, server)