2013-09-26 10 views
5

tworzę tabelę korzystając renderTable ale wewnątrz tabeli HTML nie jest renderowania:r lśniący stół nie renderowania html

table not rendering

To snipit kod zainteresowania:

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) 
} 

Nie działa HTML, paste ani c.

Jak mogę wyświetlić strzałki?

Dzięki!


server.r [Uwaga: jest to przykład. Kod nie jest kompletna, wsporniki mogą być niedopasowane, itd. Nie ma znaczenia na to pytanie.]

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 tylko proste wywołanie tableOutput lub htmlOutput, ale nie renderuje html wklejony do kolumny.

+0

Czy możesz podać minimalne, ale kompletne pliki 'ui.R' i' server.R'? – juba

+0

Mam zaktualizowane pytanie z bardziej kompletnym przykładem kodu; plik ma kilka tysięcy wierszy, więc próbuję wkleić tylko to, co konieczne. Daj mi znać, jeśli coś zostawię, i dziękuję! – JayCo

Odpowiedz

7

Naprawiono to za pomocą sanitize.text.function = function(x) x;

musi być włączone tak:

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

To jest sedno here


również, uwaga,

Zauważyłem, że można zadzwonić xtable wewnątrz renderTable funkcja, która poprawnie wyrenderuje tabelę.

ALE powinieneś zauważyć, że opcje które przechodzą na xtable nie mają żadnego efektu! Zamiast tego musisz przekazać te opcje do funkcji renderowania.

więc jeśli chcesz nazwać:

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

co trzeba zrobić, to:

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

Zespół RStudio a faceci RShiny są niesamowite. Jestem pewien, że wciąż jest napisana tona dokumentacji i mam nadzieję, że pomoże to komuś w międzyczasie.

+0

Czy istnieje odpowiednik 'sanitize.text.function' dla' renderDataTable'? Dzięki! – harkmug

+0

Wygląda na to, że 'sanitize.text.function' pochodzi z pakietu' xtable', który sam zapisuje html - 'renderTable' przekazuje tylko parametry. Prawdopodobnie możliwe jest osadzenie html w taki sposób, że 'renderDataTable' poprawnie go wyświetli ... ale to brzmi jak nowe pytanie! – JayCo

+0

Nie musisz używać sensybilizacji tekstu dla 'renderDataTable' - renderuje ona html automatycznie. Należy pamiętać, że obecna implementacja (1 listopada 2014 r.) Będzie sortować alfabetycznie stylizowany html bez ucieczki z html! Przesłałem do tego raport o błędzie. – JayCo

Powiązane problemy