Shiny App 的条件错误消息
Conditional error messages for Shiny App
我有一个应用程序,您可以在其中输入自己的数据,然后有两个 select 输入,用户可以在其中 select 他们的因变量(来自输入数据的列)和多个自变量。我想这样做,如果他们 select 数据中的一列具有空值,则会立即弹出一条错误消息,告诉他们存在空值。这是因为如果存在空值,则应用程序不会 运行 并在他们点击 运行 按钮时崩溃。
我的第一个想法是像这样使用验证命令:
validate(
need(is.na(input$yvariable), "Error: null value detected in variable")
))
(输入$y变量是因变量)
但是,当我应用它时,这似乎没有任何作用。我还尝试使用 if-else 语句在 UI 中隐藏帮助文本,但也没有成功。同样,一旦 select 具有任何空值的列,错误就会弹出,这一点很重要。有什么明确的方法可以解决这个问题吗?有人做过类似的事情吗?
谢谢!
这是一个起始代码,您可以使用它来构建它。下面的代码是使用 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)
我有一个应用程序,您可以在其中输入自己的数据,然后有两个 select 输入,用户可以在其中 select 他们的因变量(来自输入数据的列)和多个自变量。我想这样做,如果他们 select 数据中的一列具有空值,则会立即弹出一条错误消息,告诉他们存在空值。这是因为如果存在空值,则应用程序不会 运行 并在他们点击 运行 按钮时崩溃。
我的第一个想法是像这样使用验证命令:
validate(
need(is.na(input$yvariable), "Error: null value detected in variable")
))
(输入$y变量是因变量)
但是,当我应用它时,这似乎没有任何作用。我还尝试使用 if-else 语句在 UI 中隐藏帮助文本,但也没有成功。同样,一旦 select 具有任何空值的列,错误就会弹出,这一点很重要。有什么明确的方法可以解决这个问题吗?有人做过类似的事情吗?
谢谢!
这是一个起始代码,您可以使用它来构建它。下面的代码是使用 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)