2017-09-22 3 views
1

Ich habe eine Matrix M mit positiven Werten und negativen Werten. Ich versuche, als eine Tabelle in glänzenden App anzuzeigen, mit dem DT-Paket. Ich möchte die Matrix mit verschiedenen Farben anzeigen. Positive Zahlen in roten und negativen Zahlen (zum Beispiel).Wie in glänzenden App eine Matrix anzuzeigen, die Farbe mit Bedingungen angeben?

Bis jetzt kann ich Farben nur eins-zu-eins hinzufügen. Aber ich möchte auf diese Weise Farben hinzufügen: wenn Matrixwerte> 0 "Farbe1", wenn Matrixwerte < 0 "Farbe2".

M <- matrix(c(-3:2), 3) # The matrix is more complex and it's created in a 
reactive environment. Here is only an example 

M_out <- reactive({ 

DT::datatable(M()) %>% 
    formatStyle(
    columns = c(1:7), 
    backgroundColor = styleEqual(c(0, 1), c("green", "red") 
    )) 
}) 
output$X_table_2 <- DT::renderDataTable(M_1X2()) 

Danke !!

Antwort

0

können Sie DT::styleInterval anstelle von DT::styleEqual

library(DT)  # for datatable, formatStyle, styleInterval 
library(dplyr) # for %>% 

myDT <- matrix(c(-3:2), 3) %>% datatable %>% 
    formatStyle(
    columns = 1:2, 
    backgroundColor = styleInterval( 
     cuts = c(-.01, 0), 
     values = c("red", "white", "green") 
    ) 
) 

myDT 

diese Zeilen in RStudio Runnig wird die formatierte Matrix im Anzeigebereich angezeigt werden soll. Wenn Sie RStudio nicht verwenden, können Sie die Tabelle auch in einer glänzenden App anzeigen.

library(shiny) 
shinyApp(
    ui = fluidPage(DT::dataTableOutput('table')) 
    server = function(input, output, session){ 
    output$table = DT::renderDataTable({myDT}) 
    } 
) 
+0

Danke. Es funktioniert in Ordnung. Lass mich eine andere Frage stellen. Tatsächlich versuche ich, eine Matrix X mit der Dimension gleich M anzuzeigen. Anstatt der Anzeige M möchte ich die Matrix X, nicht M anzeigen. Es bedeutet: * color1 in Zellen von X mit M> 0 (X [M > 0]), color2 in Zellen von X mit M <0 (X [M <0]) und color3 in Zellen von X mit M == 0 (X [M == 0]) *. Ist es möglich, auf eine einfache Art und Weise zu tun? Vielen Dank !!! –

+0

Ja, das ist möglich, aber nicht sehr einfach. Sie können die Spalten von M als versteckte Spalten zur Tabelle hinzufügen und sie als 'valueColumns' in' formatStyle' verwenden. –

+0

Ich habe gerade die Antwort aktualisiert, um zu diskutieren, wie man eine Matrix X nach einer anderen Matrix M entwirft. –

Verwandte Themen