【发布时间】:2016-09-22 18:38:33
【问题描述】:
想法
根据selectizeInput() 输入,我想显示数据框中的一行数据。但是,某些变量只有在它们的值不是FALSE 时才会显示。 selectizeInput() 包含一个占位符提示,这是非常可取的。
问题
我开发的代码实际上可以工作,但在选择任何选项之前会显示
if: 参数长度为零时出错
在应用程序内部,这是非常不受欢迎的。
示例代码
library("shiny")
# simulate data
data <- data.frame(
name = c("Adam", "Debbie", "Lancelot", "Dracula"),
age = c(21, 48, 72, 1023),
coward = c("yes, a coward", "just a little bit", FALSE, "too old to be a coward")
)
ui <- fluidPage(
# selectize
selectizeInput(
inputId = "input",
label = NULL,
choices = c("..." = "", as.character(data[, "name"])),
selected = NULL,
multiple = FALSE
),
# show output
uiOutput(outputId = "output")
)
server <- function(input, output, session){
output$output <- renderUI({
div(
# show name
data[which(input$input == data[, "name"]), "name"], br(),
data[which(input$input == data[, "name"]), "age"], br(),
# if "coward" is not FALSE than show its value
if(data[which(input$input == data[, "name"]), "coward"] != FALSE){
data[which(input$input == data[, "name"]), "coward"]
}
)
})
}
shinyApp(ui, server)
尝试的解决方案
尝试将if() 语句包装在suppressWarnings() 或suppressMessages() 中。不会改变任何东西。还尝试将!is.null(input$input) && 放入if() 条件中,但它只是将初始错误更改为
错误:需要 TRUE/FALSE 的地方缺少值
问题
如何编写条件以使shiny 在选择selectizeInput() 中的选项之前不会返回错误?
还有其他更通用的 hack 来强制 shiny 不在应用内显示错误消息吗?
我觉得我在这里遗漏了一些明显的东西......
【问题讨论】: