我有输出图的条件选项卡,通过在server.R端构造图输出$ VtPlot [1:n],然后用:
组装到tabsetPanel中。output$plotTabs = renderUI({
nTabs <- as.numeric(input$nTraces)
plotTabs <- lapply(paste0('VtPlot', 1:nTabs),function(nm)tabPanel(nm,plotOutput(nm)))
do.call(tabsetPanel, plotTabs)
})
在输入端的第1个(始终显示)选项卡上输入$ nTrace条目。这些潜在图中的每一个都由来自输入选项卡的条目构成,这些条目对应于数字。
mainPanel(
uiOutput('plotTabs')
)
ui.R
中的
但是,我继续努力让-input- tabs以input$nTrace
为条件。
我尝试在tabPanels
和ui.R
两侧建立server.R
几种不同的方式并捆绑do.call
,到目前为止没有运气。我假设我错过了一些明显的东西?
感谢
答案 0 :(得分:0)
是您期望的Conditional Panel
吗?
创建一个可见或不可见的面板,具体取决于JavaScript表达式的值。 JS表达式在启动时和Shiny检测到输入/输出的相关变化时评估一次。
以下代码来自?conditionalPanel
,您的"input.plotType == 'hist'"
代码为"input.nTraces== 1"
(因为这里的条件是javascript样式):
sidebarPanel(
selectInput(
"plotType", "Plot Type",
c(Scatter = "scatter",
Histogram = "hist")),
# Only show this panel if the plot type is a histogram
conditionalPanel(
condition = "input.plotType == 'hist'",
selectInput(
"breaks", "Breaks",
c("Sturges",
"Scott",
"Freedman-Diaconis",
"[Custom]" = "custom")),
# Only show this panel if Custom is selected
conditionalPanel(
condition = "input.breaks == 'custom'",
sliderInput("breakCount", "Break Count", min=1, max=1000, value=10)
)
)
)