禁用 R 中的操作按钮面临多个输入的问题

Disable action button in R facing problem for multiple inputs

您好,我正在构建一个如下的 R 代码以获得一个闪亮的应用程序

ui = fluidPage(
  
  shinyjs::useShinyjs(),
  shinyjs::inlineCSS(appCSS),
  shinyFeedback::useShinyFeedback(),
  titlePanel("Predicting concrete strength",""),
  numericInput("CEM","Cement (kg)",""),
  numericInput("Water","Water (kg)",""),
  numericInput("PFA","Flyash (kg)",""),
  actionButton("submit", "Get the results", class = "btn-primary"),
  textOutput("class"),
  textOutput("class_prob")
  )

服务器代码是

server <- function(input, output, session) {
  
   inputsValues = reactiveValues(inputs = NULL)
  
## to disable action button until all inputs are given
   observe({
     
     if(input$CEM!="" && input$Water!= "" && input$PFA!=""){
       shinyjs::enable("submit")
     } else {
       shinyjs::disable("submit")
     }
   })
   # putting some feedback if inputs are wrongly given
  observeEvent(input$submit,{
    
    cem_con<- (as.numeric(input$CEM) > 163 & as.numeric(input$CEM) < 3307)
    shinyFeedback::feedbackDanger("CEM", !cem_con  , " abc")
    wat_con<- (as.numeric(input$Water) > 131 & as.numeric(input$Water) < 1640)
    shinyFeedback::feedbackDanger("Water",!wat_con  , "abc")
    pfa_con<-(as.numeric(input$PFA) > 55 & as.numeric(input$PFA) < 1617)
    shinyFeedback::feedbackDanger("PFA", !pfa_con, "abc")
    req(cem_con,wat_con)
    inputsValues$inputs<-c("CEM"=input$CEM,"Water"=input$Water,"PFA"=input$PFA)
    inputsValues$inputs<-as.numeric(inputsValues$inputs)
  })
  
  output$class_prob<- renderText(inputsValues$inputs)
  output$class <- renderText(sum(inputsValues$inputs))
  
}                             

当我 运行 应用程序使用

shinyApp(ui, server)

它停止并给出以下错误

正在收听 http://126.0.0.1:3739 警告:启用错误:找不到功能“启用” [没有可用的堆栈跟踪]

要检查缺失值,您可以使用 is.na(),如下所示。

observe({
    if (is.na(input$CEM) | is.na(input$Water) | is.na(input$PFA) ) {
      shinyjs::disable("submit")
    } else {
      shinyjs::enable("submit")
    }
  })