Shiny应用如何在主面板输出提示,避免选择不存在的基因点击按钮时报错
解决方案
如果你不想禁用按钮,点击不存在的基因时返回友好提示而非报错,仅需少量修改即可实现,无需改动核心绘图逻辑:
- 移除原有按钮启用/禁用代码块
删掉你贴出的这段observeEvent(input$selectGeneSymbol)逻辑,保留按钮始终可点击:observeEvent(input$selectGeneSymbol, { if(sum(unique(data_mean_sd2$Gene) %in% input$selectGeneSymbol)>0) { shinyjs::enable("plot2") shinyjs::enable("all") }else{ shinyjs::disable("plot2") shinyjs::disable("all") } }) - 新增按钮触发的存在性判断逻辑
在server部分补充/修改三个按钮的输出逻辑,基因不存在时直接返回提示文本:# 原plot1逻辑无需修改 observeEvent(input$plot1, { global$out <- plotOutput("plt1", height=600) }) # 修改plot2触发逻辑 observeEvent(input$plot2, { if(input$selectGeneSymbol %in% data_mean_sd2$Gene){ global$out <- plotOutput("plt2", height=600) }else{ global$out <- h3("您选择的基因不存在或未收录", style = "color: red;margin-top: 50px;") } }) # 补充缺失的all按钮触发逻辑 observeEvent(input$all, { if(input$selectGeneSymbol %in% data_mean_sd2$Gene){ global$out <- tagList( plotOutput("plt1", height=300), plotOutput("plt2", height=300) ) }else{ global$out <- h3("您选择的基因不存在或未收录", style = "color: red;margin-top: 50px;") } })
该方案逻辑直接,仅在UI输出层做校验,不需要调用validate函数,也不会触发底层绘图代码的报错,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Charité Learner
相关产品推荐
相关产品推荐

