在conditionalPanel中选择元素的闪亮使用数量

mli*_*ist 7 r shiny

我想显示我的闪亮应用程序的内容,具体取决于多选输入的所选项目的数量.到目前为止,我无法弄清楚使这项工作的条件应该是什么样的.

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)

ami*_*mit 6

这可能是一个品味问题,但我不喜欢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)


Jul*_*rre 5

您不能在条件面板的条件中使用 R 函数。我认为你的条件应该是:input.someSelect.length > 2