Actualiza el contenido de tabPanel con la selección en el control de la barra lateral | Shiny R
Estoy creando una aplicación muy sencilla de Shiny, donde quiero actualizar el contenido de tabPanel
con lo que se seleccione en sidebarMenu
, sin importar qué pestaña esté seleccionada. A continuación se muestra mi código de ejemplo. Por favor, avísame si estoy haciendo algo mal.
library(shinydashboard)
siderbar <- dashboardSidebar(
sidebarMenu(
# Add buttons to choose the way you want to select your data
radioButtons("select_by", "Select by:",
c("Food Type" = "Food",
"Gym Type" = "Gym",
"TV show" = "TV"))
)
)
body <- dashboardBody(
fluidRow(
tabBox(
side = "right",
selected = "Tab3",
tabPanel("Tab1", "Tab content 1"),
tabPanel("Tab2", "Tab content 2"),
tabPanel("Tab3", "Tab content 3")
)
)
)
shinyApp(
ui = dashboardPage(
dashboardHeader(title = "tabBoxes"),
siderbar,
body
),
server = function(input, output) {
getReaction <- reactive(input$select_by)
# The currently selected tab from the first box
output$tabset1Selected <- renderText({
getReaction()
})
}
)
davy.ai
Hay un par de problemas en el código proporcionado:
siderbar
está mal escrita. Debería sersidebar
.La función
reactive()
no es necesaria en la variablegetReaction
. Puede asignarse directamente el valor deinput$select_by
.Para actualizar el contenido de los paneles de pestañas en función del elemento seleccionado del menú lateral, es necesario utilizar la función
observe()
. Luego, el contenido de los paneles de pestañas puede ser actualizado utilizando la funciónupdateTabsetPanel()
.Aquí está el código corregido:
Ten en cuenta que he añadido un argumento
id
a la funcióntabBox()
para facilitar su referencia en el código del servidor. Además, el objetosession
debe ser pasado a la funciónupdateTabsetPanel()
para que funcione correctamente.