2015-06-17 28 views
10

Sto creando un'interfaccia utente per un programma di arricchimento del percorso. I risultati sono mostrati in una tabella come mostrato di seguito.Converti una colonna di URL di testo in collegamenti ipertestuali attivi in ​​Shiny

enter image description here

Qui di seguito è un frammento che mostra che sto usando DT :: renderDataTable e DT :: datatable per emettere il tavolo in una scheda. spia_out() è solo una funzione reattiva che esegue l'arricchimento del percorso e produce un dataframe.

spia_out <- reactive({ 
    ...get results in a dataframe... 
    }) 

output$spiaout <- DT::renderDataTable({ 
     DT::datatable(spia_out(), extensions = ..., options = ...) 
    }) 

Tutto funziona bene, la tabella percorso arricchimento viene generato & stampato nell'elemento utente corrispondente. Il mio unico problema è come convertire l'ultima colonna (KEGGLINK) degli URL in hyperlink attivi? In modo che le persone possano semplicemente fare clic su di essi anziché copiare & incollando.

Ci scusiamo in anticipo per le dimensioni dello screenshot. Spero che tu possa vedere l'ultima colonna KEGGLINK ha URL ma non sono attivi.

+1

See risposta qui: http://stackoverflow.com/questions/21909826/r-shiny-open-the-urls-from-rendertable-in-a-new-tab –

+2

@KenYeoh, quella risposta non è interamente applicabile come qui la domanda si riferisce a DT: renderDataTable, non lucido: renderTable e se fa ciò che è suggerito lì non funzionerà perché DT sfuggirà all'HTML di default. – jrdnmdhl

+2

@jrdnmdhl Esattamente! Non funziona perché sto usando DT :: renderDataTable e non lucido :: renderDataTable –

risposta

17

Hai bisogno di fare due cose:

  1. Modificare l'ultima colonna in modo che il KEGGLINK si trasforma in una vera e propria link HTML che assomiglia: <a href='url'>link text</a>.

  2. Passa DT l'argomento escape = FALSE in modo che non sfugga al codice HTML.

La pagina Web DT ha un esempio di questo nella sezione 2.9: https://rstudio.github.io/DT/

Un modo semplice per farlo # 1 sarebbe qualcosa di simile:

mydata$url <- paste0("<a href='",mydata$url,"'>",mydata$url,"</a>") 
+0

Grazie! Questo ha funzionato! Tuttavia, questo si apre nella stessa scheda. Potrei fare clic destro e selezionare Apri in una nuova scheda, ma c'è un modo per aprire il link in una nuova scheda, per impostazione predefinita? –

+0

Trovato! 'mydata $ url <- paste0 (" ",mydata$url," ")' –

3

In alternativa, è anche possibile per mantenere intatto il dataframe originale e indicare dataTable su come eseguire il rendering di una colonna. Vedere la sezione 4.4 Rendering delle colonne nello DT docs.

+1

Nel collegamento, non esiste un esempio che possa fare collegamenti ipertestuali. Puoi aggiungere il codice attuale. – userJT