在我的服务器中。我有:
output$interactive <- renderIHeatmap(...
output$static <- renderPlot(...
这两个渲染热图,一个是交互式的,一个是静态的。如果热图的行或列尺寸大于特定数字,是否有一种方法可以自动选择显示静态热图?所以......就像......
box(width = NULL, solidHeader = TRUE,
if (heatmap_rows<100) {
iHeatmapOutput('interactive')
} else {
plotOutput('static')
})
感谢您的时间。如果不清楚,我道歉。
答案 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背后的所有逻辑。