2015-06-17 4 views
10

Ich erstelle eine Benutzeroberfläche für ein Pathway Enrichment-Programm. Die Ergebnisse werden in einer Tabelle wie folgt angezeigt.Konvertieren Sie eine Spalte von Text-URLs in aktive Hyperlinks in Shiny

enter image description here

Unten ist ein Ausschnitt zeigt, dass ich bin mit DT :: renderDataTable und DT :: Datentabelle der Tabelle in einem Register zur Ausgabe. spia_out() ist nur eine reaktive Funktion, die die Pfadanreicherung ausführt und einen Datenrahmen erzeugt.

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

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

Alles funktioniert gut, ist der Weg Anreicherungs Tabelle & in dem entsprechenden Oberflächenelements gedruckt erzeugt. Mein einziges Problem ist, wie man die letzte Spalte (KEGGLINK) von URLs in aktive Hyperlinks umwandelt? So können die Leute einfach auf sie klicken anstatt & einfügen zu kopieren.

Entschuldigung im Voraus für die Größe des Screenshots. Ich hoffe, Sie können sehen, die letzte Spalte KEGGLINK hat URLs, aber sie sind nicht aktiv.

+1

Siehe Antwort hier: http://stackoverflow.com/questions/21909826/r-shiny-open-the-urls-from-rendertable-in-a-new-tab –

+2

@KenYeoh, diese Antwort ist nicht vollständig anwendbar, da sich hier die Frage auf DT bezieht: renderDataTable, nicht shiny: renderTable und wenn er tut, was dort vorgeschlagen wird, wird es nicht funktionieren, weil DT standardmäßig den HTML-Code entzieht. – jrdnmdhl

+2

@jrdnmdhl Genau! Es funktioniert nicht, weil ich DT :: renderDataTable und nicht shiny :: renderDataTable –

Antwort

17

Sie müssen zwei Dinge tun:

  1. die letzte Spalte ändern, so dass die KEGGLINK in einen geeigneten HTML-Link geändert werden, die wie folgt aussieht: <a href='url'>link text</a>.

  2. Übergeben Sie DT das escape = FALSE Argument, damit es den HTML-Code nicht entgeht.

Die DT Webseite hat ein Beispiel dafür in Abschnitt 2.9: https://rstudio.github.io/DT/

Eine einfache Art und Weise wie # 1 wäre, etwas zu tun:

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

benutze Danke! Das hat funktioniert! Dies öffnet sich jedoch in der gleichen Registerkarte. Ich konnte mit der rechten Maustaste klicken und in einem neuen Tab öffnen auswählen, aber gibt es eine Möglichkeit, den Link in einem neuen Tab standardmäßig zu öffnen? –

+0

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

3

Alternativ ist es auch möglich, um den ursprünglichen Datenrahmen intakt zu halten und dataTable mitzuteilen, wie eine Spalte gerendert werden soll. Siehe Abschnitt 4.4 Spalten-Rendering in der DT docs.

+1

In der Verknüpfung gibt es kein Beispiel für Hyperlinks. Können Sie den tatsächlichen Code hinzufügen? – userJT