【发布时间】:2021-11-18 21:43:26
【问题描述】:
我的应用包含两个基于用户输入创建的 tabSetPanel(在下面的示例中,用户输入是一组单选按钮)。用户输入确定两个 tabSetPanels 和 所选选项卡中的选项卡数量。我还希望两个 tabSetPanel 在用户输入更改或在任一集中选择不同的选项卡时显示相同的选项卡。原始应用程序包含阻止我合并两个 tabSetPanel 的功能。问题是两个 tabSetPanel 最初都显示没有任何内容的选项卡。 这是一个最小的可重现示例:
library(shiny)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
# User input for number of tabs and selected tab
radioButtons("tabSelector", "Select Number of Tabs", 1:3, 1),
br()
),
mainPanel(
uiOutput(
"set1"
),
uiOutput(
"set2"
)
)
)
)
server <- function(input, output, sesstion){
output$set1 <- renderUI({
tabs <- list()
for(i in seq_len(input$tabSelector)){
tabs[[i]] <- tabPanel(
title = paste0("tab",i),
value = i,
numericInput(
paste0("num",i),
"Number",
value = 0
)
)
}
do.call(tabsetPanel, c(tabs,
list(id = "set1",
selected = input$tabSelector)))
})
output$set2 <- renderUI({
tabs <- list()
for(i in seq_len(input$tabSelector)){
tabs[[i]] <- tabPanel(
title = paste0("tab",i),
value = i,
numericInput(
paste0("num",i),
"Number",
value = 0
)
)
}
do.call(tabsetPanel, c(tabs,
list(id = "set2",
selected = input$tabSelector)))
})
# Bind the two tabSetPanels
observeEvent(input$set1, {
updateTabsetPanel(inputId = "set2", selected = input$set1)
})
observeEvent(input$set2,{
updateTabsetPanel(inputId = "set1", selected = input$set2)
})
} # end server function
if (interactive()) {
shinyApp(ui, server)
}
提前致谢
【问题讨论】: