如果满足条件,R-shiny显示某些情节

时间:2015-07-27 22:28:44

标签: user-interface shiny heatmap

在我的服务器中。我有:

output$interactive <- renderIHeatmap(...

output$static <- renderPlot(...

这两个渲染热图,一个是交互式的,一个是静态的。如果热图的行或列尺寸大于特定数字,是否有一种方法可以自动选择显示静态热图?所以......就像......

box(width = NULL, solidHeader = TRUE,
      if (heatmap_rows<100) {
         iHeatmapOutput('interactive')
      } else  {
         plotOutput('static')
      })

感谢您的时间。如果不清楚,我道歉。

1 个答案:

答案 0 :(得分:2)

您正在寻找的是conditionalPanel()。

在server.R中,您需要创建一个行数:

shinyServer(function(input,output,session){
  output$heatmap_rows <- renderText(nrow(heatmap_data))
}

在您的ui.R中,您需要在某处显示该输出。您可以使用.css巧妙地隐藏它,但它必须实际进入页面的html,否则您将无法使用conditionalPanel对其进行条件化。

所以这是ui.R中的一般想法:

shinyUI(fluidPage(
  mainPanel(

    #Note the output.heatmap_rows syntax. That's JavaScript.
    conditionalPanel("output.heatmap_rows < 100", 
                     iHeatmapOutput('interactive')
    ),
    conditionalPanel("output.heatmap_rows >= 100",
                     plotOutput('static')
    )
  ),

  #This has to be somewhere on the page, and it has to render.
  #Alter the css and make its' text the same color as the background.
  verbatimTextOutput("heatmap_rows")

))

我还没有找到一种更好的方法来对输出数据进行条件化。您可能也可以隐藏server.R中uiRender背后的所有逻辑。