2015-01-23 11 views
18

Ich habe eine Tabelle mit einigen HTML-Links mit Shiny's renderDataTable erstellt. Die Links sind nicht anklickbar, obwohl, sondern sie machen wörtlich:Anklickbare Links in Shiny Datatable

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

Haben Sie eine Ahnung, was könnte falsch sein? Es funktionierte gut, bevor Sie Shiny auf die Version 0.11 upgraden ... Danke!

+1

umfassen Ihr versucht, Code – HaveNoDisplayName

+0

Wie ich den Code gelesen, dass diese Linie zu meinem Browser gedrückt wird tut, um die Anzeige des Bereichs, den ich glaube, Sie haben Schwierigkeiten mit, die mir zeigt, dass wir wirklich brauchen wissen, was in der zugrunde liegenden Tabelle ist: '

' –

+5

Danke, ich habe die Lösung gefunden. Die RenderDataTable-Funktion in Shiny hat ein Argument Escape. Es wurde in der neuen Version standardmäßig auf TRUE gesetzt. Wenn ich es ändere, funktioniert es wieder. Weitere Informationen: http://shiny.rstudio.com/reference/shiny/latest/renderDataTable.html –

Antwort

27

Ich hatte das gleiche Problem. Die Option escape = FALSE für renderDataTable löste es, wie Sie in den Kommentaren erwähnt haben.

Hier ist der vollständige Code für eine App mit einer Tabelle, die Links enthält.

Wenn Sie dies tun, möchten Sie, dass jeder Link basierend auf einem Wert in der Tabelle eindeutig ist. Ich verschiebe diesen Code in eine Funktion, damit er sauberer wird.

#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) 
+0

Eine weitere Anmerkung für jeden, der hier debuggt: Wenn 'my_table' in diesem Beispiel ein datatables Objekt ist, müssen Sie sicherstellen, dass es auch die Escape = FALSE Option hat (nur die Einstellung für renderDataTable funktioniert nicht). dann wäre eine einfache Lösung my_table <-datatable (my_table, escape = F) –

Verwandte Themen