我想显示我的闪亮应用程序的内容,具体取决于多选输入的所选项目的数量.到目前为止,我无法弄清楚使这项工作的条件应该是什么样的.
library(shiny)
shinyUI(pageWithSidebar(
headerPanel("select and conditional panel"),
sidebarPanel(
selectInput(inputId = "someSelect", multiple=TRUE, label = "Genes:", choices = colnames(someDataFrame), selected = c("ESR1", "CD44")),
),
mainPanel(
conditionalPanel(
condition="length(input.someSelect.selected) > 2",
tabsetPanel(
...
)
)
)
))
Run Code Online (Sandbox Code Playgroud)
这可能是一个品味问题,但我不喜欢conditionalPanel构造,因为它将javascript逻辑输入到R代码中.相反,我更喜欢可以生成动态UI的uiOutput(和相应的renderUI).虽然conditionalPanel只能处理相当简单的条件,但动态UI方法可以创建基于更复杂逻辑的条件外观,并且可以利用R的功能.然而,响应变化的速度稍慢.
如果您使用这种方法,您的ui.r应该类似于:
mainPanel(uiOutput("myConditionalPanel"))
Run Code Online (Sandbox Code Playgroud)
和你的server.r看起来像这样:
output$myConditionalPanel = renderUI({
if(length(input$someSelect)>2) {
## some ui definitions here. for example
tabsetPanel(
...
)
} else {
## some alternative definitions here...
}
})
Run Code Online (Sandbox Code Playgroud)