我有一个应用程序,您可以在其中输入自己的数据,然后有两个选择输入,用户可以在其中选择其因变量(从输入数据中选择列)和多个自变量。我要这样做,如果他们从数据中选择一个具有空值的列,则会立即弹出一条错误消息,告诉他们有一个空值。这是因为如果值为空,则应用程序在按下“运行”按钮时将不会运行并崩溃。
我的第一个念头是使用像这样的validate命令:
validate(
need(is.na(input$yvariable), "Error: null value detected in variable")
))
(input $ yvariable为因变量)
但是,当我应用它时,它似乎并没有做任何事情。我还尝试使用if-else语句在UI中隐藏帮助文本,但那里也没有运气。同样,重要的是,一旦他们选择具有任何空值的列,就会弹出错误。有什么明确的方法可以实现这一目标吗?有没有人做过类似的事情?
谢谢!
答案 0 :(得分:2)
这是您可以在其基础上使用的开始代码。以下代码使用showModal
在缺少值时弹出一条消息,您可以根据需要自定义此消息。另一个选项是在缺少值时使用shinyjs::disable
禁用“运行”按钮。
library(shiny)
ui <- fluidPage(
uiOutput('inVar'),
textOutput("textsummary")
)
server <- function(input, output, session) {
df <- mtcars
df$disp[3:8]<-NA
observe(print(df[,input$DepVar]))
output$inVar <- renderUI({
selectInput(inputId = "DepVar", label = h4("Select variables:"), choices = colnames(df))
})
output$textsummary <- renderText({
paste("Missing of",input$DepVar, " is ", sum(is.na(df[,input$DepVar])))
})
observe({
if(sum(is.na(df[,input$DepVar]))>0)
showModal(modalDialog(
title = "Somewhat important message",
"This is a somewhat important message.",
easyClose = TRUE,
footer = NULL
))
})
}
shinyApp(ui, server)