在 Shiny R 中根据用户选择有条件地渲染 html

In Shiny R render html conditionally based on user selection

我想根据用户输入显示不同的 html 文件。基本上,用户在两个 pickerinput 元素中进行选择,并根据选择显示不同的 html 文件。

我有 ui。 R

  fluidRow( style = "background-color:#FFFAFA00;",
       
            htmlOutput("example")
  ))),

在我的 服务器中。 R

示例 <- 反应式({

if (input$chap == "ai" & input$cat == "ch") {
  htmlOutput("aich")
} 

else if (input$chap == "ai" & input$cat == "pr") {
  htmlOutput("aipr")
  }
})

选中后没有任何反应。对此有任何想法

我们可以试试这个:

observe({
  
  if (input$chap == "ai" & input$cat == "ch") {
    output$example <- renderText("html_code_here")
  } 
  
  else if (input$chap == "ai" & input$cat == "pr") {
    output$example <- renderText("html_code_here")
  }
})

此外,observeEvent(c(input$chap, input$chap), {...}) 我认为可以工作。

很难根据提供的信息判断这是否有效,但我构建了一个示例。

library(shiny)

ui <- fluidPage(
  sidebarLayout(
  sidebarPanel(textInput(inputId = 'chap','input 1',placeholder = 'ai'),
               textInput(inputId = 'cat', 'input 2',placeholder = 'ch')),
  mainPanel(htmlOutput('example')))
  
)

server <- function(input, output, session) {
  observe({
    req(input$chap)
    
    if (input$chap == "ai" & input$cat == "ch") {
      output$example <- renderText("<h1>This is the H1</h1>")
    } 
    
    else { if (input$chap == "ai" & input$cat == "pr") {
      output$example <- renderText("aipr")
    }
    }  
  })
}

shinyApp(ui, server)