【问题标题】:condition on content of tabpanel shiny选项卡闪亮内容的条件
【发布时间】:2017-11-30 13:29:29
【问题描述】:

如果满足条件,我希望能够显示一些内容,我非常感谢一些帮助。我认为我很接近,但需要提升。我希望能够显示:

  • content1 if class(iris$ .. ) = "numeric" _ content2 if class(iris$ .. ) = "factor"

到目前为止,这是我的代码:

library(shiny)

ui = navbarPage(
       "TEST",                        
       tabPanel("Iris data",
                uiOutput("tabs"),
                conditionalPanel(condition = "input.level==1",
                                 helpText("content1")
                ), 
                conditionalPanel(condition = "input.level==5",
                                 helpText("content2")
                )
       )
)

server = function(input, output, session) {
  output$tabs = renderUI({            
    Tabs <- as.list(colnames(iris))
    Tabs_type <- lapply(iris, function(x) class(x))

    for (i in 0:length(Tabs)){
      Tabs[i] = lapply(paste(Tabs[i], sep=" "),tabPanel, value = Tabs_type[[i]])
    }

    do.call(tabsetPanel, c(Tabs, id = "value"))            
  })
}

shinyApp(ui, server)

不知道怎么把id改成class(iris$ ...)

提前感谢您的帮助

【问题讨论】:

  • 请看我对this question的回复。我希望这会有所帮助
  • 嘿,我看到了你的答案,但我似乎无法更改每个 tabapanel 的 id 以对其有条件!

标签: r tabs shiny conditional-statements


【解决方案1】:

好的,你已经看过我在 cmets 中指出的答案了。在这里,我已经将它应用于您的问题。

library(shiny)

ui = navbarPage(
  "TEST",                        
  tabPanel("Iris data",
           uiOutput("tabs"),
           conditionalPanel(condition = "output.cond1",
                            helpText("content1")
           ), 
           conditionalPanel(condition = "output.cond2",
                            helpText("content2")
           )
  )
)

server = function(input, output, session) {
  output$tabs = renderUI({            
    Tabs <- as.list(colnames(iris))
    Tabs_type <- lapply(iris, function(x) class(x))

    for (i in 0:length(Tabs)){
      Tabs[i] = lapply(paste(Tabs[i], sep=" "),tabPanel, value = Tabs_type[[i]])
    }
    do.call(tabsetPanel, c(Tabs, id = "value"))            
  })
  output$cond1 = reactive({
    input$value ==  "numeric"
  })
  outputOptions(output, "cond1", suspendWhenHidden = FALSE)
  output$cond2 = reactive({
    input$value ==  "factor"
  })
  outputOptions(output, "cond2", suspendWhenHidden = FALSE)

}

shinyApp(ui, server)

【讨论】:

  • 非常感谢@Gregor de Cillia!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-03
  • 2016-12-11
  • 2015-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-03
相关资源
最近更新 更多