Shiny中基于服务器输出参数控制conditionalPanel显示的问题咨询
Shiny中基于服务器输出参数控制conditionalPanel显示的问题咨询
我最近在Shiny里使用conditionalPanel时遇到了个困惑:当我想用服务器端通过output传递的参数作为显示条件时,出现了不符合预期的情况,想请大家帮忙解惑。
先看我的第一个测试程序,它能正常运行:
library(shiny) ui <- fluidPage( # This is Jeff's conditionalPanel conditionalPanel( condition = "output.DataModelJeff > 0", div(style="color: rgb(0,135,73); text-align:center; font-size: 24px; background-color: rgb(0,135,73)", textOutput("DataModelJeff"), ), div(style="color: white; text-align:center; font-size: 24px; background-color: rgb(0,135,73)", p("Hi"), ) ) ) server <- function(input, output, session) { DataModelJeff <- 194 output$DataModelJeff <- renderText({DataModelJeff}) } shinyApp(ui, server)
这个程序能正确显示conditionalPanel,同时也能展示条件对应的数值194。
但我把其中的textOutput("DataModelJeff")注释掉后,第二个测试程序就完全不显示conditionalPanel了,连里面的"Hi"也看不到:
library(shiny) ui <- fluidPage( # This is Jeff's conditionalPanel conditionalPanel( condition = "output.DataModelJeff > 0", # div(style="color: rgb(0,135,73); text-align:center; font-size: 24px; background-color: rgb(0,135,73)", # textOutput("DataModelJeff"), # ), div(style="color: white; text-align:center; font-size: 24px; background-color: rgb(0,135,73)", p("Hi"), ) ) ) server <- function(input, output, session) { DataModelJeff <- 194 output$DataModelJeff <- renderText({DataModelJeff}) } shinyApp(ui, server)
再看我实际项目中的代码片段,这里我组合了多个条件,其中包含output.DataModelJeff > 0,结果也是完全不显示conditionalPanel:
ui <- fluidPage( conditionalPanel( # This is Jeff's conditionalPanel condition = "input.cond1 == 'event1' && input.cond2 > 0 && output.DataModelJeff > 0", div(style="color: white; text-align:center; font-size: 24px; background-color: rgb(0,135,73)", textOutput("DataModelJeff"), ), div(style="color: white; text-align:center; font-size: 24px; background-color: rgb(0,135,73)", p("Some text")), br(), ) ) server <- function(input, output, session) { DataModelJeff <- 194 output$DataModelJeff <- renderText({DataModelJeff}) } shinyApp(ui, server)
如果我把条件里的&& output.DataModelJeff > 0去掉,程序就能正常显示conditionalPanel和数值,但这不符合我的需求——我需要另一个conditionalPanel在DataModelJeff不等于194时不显示(194只是我随便选的,是《青蜂侠》里的车牌号码)。
我想请教大家:为什么包含output.DataModelJeff > 0的条件会导致conditionalPanel无法显示?其实我并不需要显示这个数值,但如果必须显示它才能让条件生效的话,我也可以接受。
非常感谢大家的帮助!
备注:内容来源于stack exchange,提问作者Jeffrey Rolland
相关产品推荐
相关产品推荐

