【问题标题】:How can I dynamically render HTML links in Shiny?如何在 Shiny 中动态呈现 HTML 链接?
【发布时间】:2020-10-09 01:20:43
【问题描述】:

在一个闪亮的应用程序中,我想使用从文件加载的 URL 动态创建一个链接。该链接出现在条件面板中。在我的第一次尝试中,ui 部分看起来像这样:

     conditionalPanel(condition = "input.myEvent",
            fluidRow(column(12,tags$p(textOutput("description")))),
            fluidRow(column(6, tags$a(href='http://www.google.com/', "Google"))),
            fluidRow(column(6, tags$a(href="url", 'website'))),

虽然服务器部分看起来像这样:

    observeEvent(input$myEvent, { 
          p <- input$myEvent

          description = c(data[data$Name == p, ]$Description)
          output$description <- renderText(description)

          url1 = c(data[data$Name == p, ]$Website)
          output$url <- renderText(url1)
      }
    )

使用此代码,URL 被视为字符串“url”,因此它不起作用。

我找到了另一个答案Create URL hyperlink in R Shiny?

但是,该示例使用静态 URL。我不知道如何使它动态化。在这里,我使 UI 部分看起来像

    uiOutput("url")

服务器部分看起来像:

          url <- a("website", href='url1')
          output$url <- renderUI({
              paste(url)
          })
    

但同样,url 只是字符串 'url1',并且 url 再次呈现为文本,而不是可点击的链接。看起来很近,但是 a) 如何将此服务器代码中的 href 值设置为变量? b)如何使输出成为实际的 html 锚标记,而不仅仅是文本。

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    不确定这是否完全回答了您的问题,但您可能缺少 HTML(paste(url)) 以使其成为链接。

    library(shiny)
    
    hrefs <- list('StackOverflow'= 'https://stackoverflow.com', 
                  'R-project'= 'https://www.r-project.org/')
    
    shinyApp(
      ui = fluidPage(
        selectInput('href_ref','Link:', 
                    choices=names(hrefs), selected=names(hrefs)[1]),
        uiOutput("url")
      ),
      server = function(input, output) {
        output$url <- renderUI({
          url <- a("website", href=hrefs[input$href_ref])
          HTML(paste(url))
        })
      }
    )
      
    
    

    【讨论】:

    • HTML() 调用解决了部分问题,而您的 href=hrefs[] 等示例解决了另一部分。 IDK 为什么我假设 href= 中的值必须是字符串文字。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 2017-06-13
    • 2021-12-13
    • 2019-07-29
    • 2019-02-10
    • 2011-07-26
    相关资源
    最近更新 更多