2013-09-26 8 views
5

ich mit renderTable eine Tabelle bin zu schaffen, sondern den HTML-Code in der Tabelle rendert nicht:r glänzend Tabelle nicht HTML-Rendering

table not rendering

Dies ist der Code snipit von Interesse:

if (is.null(Compare_Count) || is.na(Compare_Count) || length(Compare_Count) == 0L) { 
      CT_Table[i, 3] <- HTML("<i class='icon-arrow-up'></i>") 
     } else if (CT_Table[i, 2] > Compare_Count) { 
      CT_Table[i, 3] <- print(tags$i(class='icon-arrow-up', style="text-color: green"), quote = FALSE) 
} 

Weder HTML, paste noch c funktionieren.

Wie kann ich die Pfeile anzeigen lassen?

Danke!


server.r: [Anmerkung, ist dies ein Beispiel. Der Code ist nicht vollständig, Klammern nicht übereinstimmen werden können, usw. Nicht auf die Frage wichtig.]

output$example <- renderTable(include.rownames=FALSE,{ 
CT_Table <- count(Canidates,vars=c("Name")) 
CT_Table <- CT_Table[order(CT_Table["Recent Reviews: "], decreasing=T),] 
    for (i in 1:nrow(CT_Table)) { 
     Compare_Name <- paste(CT_Table$Product[i]) 
     Compare_Count <- Can_trend[Can_trend$Name == Compare_Name, 2] 
     if (is.null(Compare_Count) || is.na(Compare_Count) || length(Compare_Count) == 0L) 
{ 
      CT_Table[i, 3] <- HTML("<i class='icon-arrow-up'></i>") 
     } else if (CT_Table[i, 2] > Compare_Count) { 
      CT_Table[i, 3] <- tags$i(class='icon-arrow-up', style="text-color: green") 
     } else if (CT_Table[i, 2] < Compare_Count) { 
      CT_Table[i, 3] <- tags$i(class='icon-arrow-down', style="text-color: red") 
     } else if (CT_Table[i, 2] == Compare_Count) { 
      CT_Table[i, 3] <- tags$i(class='icon-minus', style="text-color: yellow") 
     } 
    } 
    } 
CT_Table 
}) 

ui.r ist nur ein einfacher Anruf tableOutput oder htmlOutput, aber weder rendert die HTML in die Spalte eingefügt.

+0

Können Sie minimale, aber vollständige 'ui.R' und' server.R' Dateien bereitstellen? – juba

+0

Ich habe die Frage mit einem vollständigeren Codebeispiel aktualisiert; Die Datei ist ein paar tausend Zeilen lang, also versuche ich nur einzufügen, was notwendig ist. Bitte lassen Sie mich wissen, wenn ich etwas ausgelassen habe, und danke! – JayCo

Antwort

7

Dies wurde mit sanitize.text.function = function(x) x behoben;

es so aufgenommen werden muss:

output$example <- renderTable({ 
    table <- someTable_Data_here 
    table 
}, sanitize.text.function = function(x) x) 

Dies ist der Kern here


auch, eine Notiz,

ich bemerkt habe, dass Sie xtable innerhalb der Anruf renderTable Funktion, und es wird die Tabelle ordnungsgemäß rendern.

ABER sollten Sie beachten, dass Optionen, die Sie an xtable übergeben, keinen Effekt haben! Stattdessen müssen Sie diese Optionen an die Funktion 'renderTable' übergeben.

so, wenn Sie wollen, dass diese nennen:

output$example <- renderTable({ 
    table <- someTable_Data_here 
    xtable(table, align=c("llr")) 
}, sanitize.text.function = function(x) x) 

, was Sie tun müssen, ist:

output$example <- renderTable({ 
    table <- someTable_Data_here 
    table 
},align=c("llr"), sanitize.text.function = function(x) x) 

Die RStudio Team und die RShiny Jungs sind genial. Ich bin mir sicher, dass eine Menge der Dokumentation noch geschrieben wird, und ich hoffe, das hilft jemandem in der Zwischenzeit.

+0

Gibt es ein Äquivalent von 'sanitize.text.function' für' renderDataTable'? Vielen Dank! – harkmug

+0

Es sieht unwahrscheinlich aus, da 'sanitize.text.function' aus dem' xtable'-Paket stammt, das selbst den html schreibt - 'renderTable' gibt nur Parameter an es weiter. Es ist wahrscheinlich möglich, HTML so einzubetten, dass 'renderDataTable' es korrekt anzeigt ... aber das klingt nach einer neuen Frage! – JayCo

+0

Sie müssen keine Textsensibilisierung für 'renderDataTable' verwenden - es rendert HTML automatisch. Sie sollten beachten, dass die aktuelle Implementierung (1. November 2014) Ihr stilisiertes HTML alphabetisch sortiert, ohne dem HTML zu entkommen! Ich habe dafür einen Fehlerbericht eingereicht. – JayCo