Clickable links in Shiny Datatable

Petr Kočí picture Petr Kočí · Jan 23, 2015 · Viewed 15.4k times · Source

I created a table containing some HTML links using Shiny's renderDataTable. The links are not clickable, though, instead they render literally:

https://samizdat.shinyapps.io/zakazky/

Do you have any idea what could be wrong? It worked fine before upgrading Shiny to the version 0.11... Thanks!

Answer

williamsurles picture williamsurles · Apr 14, 2015

I had the same problem. The escape = FALSE option for renderDataTable solved it, as you mentioned in the comments.

Here is complete code for an app with a table that has links.

If you are doing this, you will want each link to be unique based on a value in the table. I move this code into a function so its cleaner.

#app.R#

library(shiny)

createLink <- function(val) {
  sprintf('<a href="https://www.google.com/#q=%s" target="_blank" class="btn btn-primary">Info</a>',val)
}

ui <- fluidPage(  
  titlePanel("Table with Links!"),
  sidebarLayout(
    sidebarPanel(
      h4("Click the link in the table to see
         a google search for the car.")
    ),
    mainPanel(
      dataTableOutput('table1')
    )
  )
)

server <- function(input, output) {

  output$table1 <- renderDataTable({

    my_table <- cbind(rownames(mtcars), mtcars)
    colnames(my_table)[1] <- 'car'
    my_table$link <- createLink(my_table$car)
    return(my_table)

  }, escape = FALSE)
}

shinyApp(ui, server)