En Shiny R, renderiza HTML de manera condicional basándose en la selección del usuario.
Quiero mostrar diferentes archivos HTML según la entrada del usuario. Básicamente, el usuario hace su selección en dos elementos “pickerinput” y, según la selección, se muestra un archivo HTML diferente.
Tengo en mi archivo “ui.R”
fluidRow(style = "background-color:#FFFAFA00;",
htmlOutput("example")
)
y en mi archivo “server.R”
example <- reactive({
if (input$chap == "ai" & input$cat == "ch") {
htmlOutput("aich")
}
else if (input$chap == "ai" & input$cat == "pr") {
htmlOutput("aipr")
}
})
No sucede nada cuando se selecciona. ¿Alguna idea sobre esto?
davy.ai
¿Problema?
Parece que estás intentando usar la función
htmlOutput
dentro de tu expresiónreactive
en el archivo del servidor. Sin embargo,htmlOutput
es en realidad una función que se utiliza en el archivo de la interfaz de usuario (UI) para decirle a Shiny dónde colocar el contenido HTML que se genera en el servidor.Para mostrar diferentes archivos HTML según la entrada del usuario, puedes usar la función
renderUI
en el archivo del servidor. Esta función toma una expresión reactiva como entrada y genera la salida HTML basada en su valor.Aquí tienes un ejemplo de cómo podrías modificar tu código:
En el archivo de la interfaz de usuario (UI):
En el archivo del servidor:
En este ejemplo, la función
renderUI
toma una declaraciónif
que verifica los valores de dos elementospickerInput
llamadoschap
ycat
. Si el usuario selecciona “ai” y “ch” en esas entradas, genera una salida HTML utilizando la funciónincludeHTML
, que toma una ruta de archivo como entrada. De lo contrario, devuelveNULL
.Ten en cuenta que necesitarías tener los archivos HTML
aich.html
yaipr.html
guardados en el directorio de tu aplicación para que esto funcione.