2015-01-23 17 views
18

Ho creato una tabella contenente alcuni collegamenti HTML utilizzando il renderingDataTable di Shiny. I collegamenti non sono cliccabili, però, invece rendono letteralmente:Collegamenti selezionabili in Shiny Datatable

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

Avete idea di quello che potrebbe essere sbagliato? Ha funzionato bene prima di aggiornare Shiny alla versione 0.11 ... Grazie!

+1

includono il codice provato – HaveNoDisplayName

+0

Come ho letto il codice che viene spinto a mio browser questa linea sta facendo la visualizzazione della zona che penso che si stanno avendo difficoltà con, il che mi fa pensare che abbiamo davvero bisogno di sapere cosa c'è nella tabella sottostante: '

' –

+5

Grazie, ho trovato la soluzione. La funzione renderDataTable in Shiny ha una escape di argomento. Nella maggior parte dei casi è stato impostato su TRUE per impostazione predefinita nella nuova versione. Quando lo cambio, funziona di nuovo. Maggiori informazioni: http://shiny.rstudio.com/reference/shiny/latest/renderDataTable.html –

risposta

27

Ho avuto lo stesso problema. L'opzione escape = FALSE per renderDataTable l'ha risolto, come hai menzionato nei commenti.

Ecco il codice completo per un'app con una tabella con collegamenti.

Se si esegue questa operazione, si desidera che ciascun collegamento sia univoco in base a un valore nella tabella. Sposto questo codice in una funzione in modo che sia più pulito.

#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

Un'ulteriore nota per chi termina qui il debug: se 'my_table' in questo esempio è un oggetto datatable, è necessario assicurarsi che abbia anche l'opzione escape = FALSE (l'impostazione solo per renderDataTable non funzionerà). quindi una semplice correzione sarebbe my_table <-datatable (my_table, escape = F) –

Problemi correlati