2017-08-09 2 views
0

Ich habe versucht, das Argument rowCallback in der Optionsliste der Datentabelle zu verwenden. Die App wird nicht beendet, aber wenn sie so ausgeführt wird, wie sie ist, wird die Tabelle nicht auf die Seite geladen. ATS ist die Spalte der Datentabelle und jede Zeile mit dem Wert "Covered" in ATS sollte eine andere Farbreihe als die anderen haben. Dies ist mein erster Versuch, javaScript in shiny zu verwenden, weshalb ich nicht sicher bin, warum die Tabelle nicht angezeigt wird. Irgendwelche Vorschläge, was falsch ist? ProstMarkieren Sie Zeilen basierend auf Zelleneingabe mit JS in Rshiny Datentabellen Paket

createdRow = I(
    "function(row, data) { 
    if (parseFloat(data[5]) <= -11.0) 
    $(row).css('background-color', 'red'); 
    else 
    $(row).css('background-color', '#00adff'); 
    }); 
}" 

Antwort

0

Ich ziehe es in der Regel die eingebauten Funktionen zu verwenden, als meine eigene benutzerdefinierte JavaScript zu erstellen. In diesem Fall können Sie formatStyle verwenden. Es funktioniert gut für numerische oder auf einem bestimmten String-Wert basierend Färbung:

library(DT) 
mtcars$cyl=as.character(mtcars$cyl) 
datatable(mtcars) %>% formatStyle('cyl', 
    target = 'row', 
    backgroundColor = styleEqual(c("6"), c('#00adff')) 
) 

enter image description here

Sie mehrere Regeln als styleEqual(c("6","5"), c('#00adff',"green")) hinzufügen können, aber soweit ich weiß, es enthält nicht die Option für eine if -else Konstruktion mit Schnüren. Er tut dies für numerische, so können wir einen ‚Helfer‘ Spalte erstellen, um die Zeilenfarben auf, und verwenden Sie columnDefs zu stützen diese Spalte aus dem Ergebnis zu verbergen:

mtcars$cyl = as.character(mtcars$cyl) 
mtcars$helper = mtcars$cyl=="6" 
datatable(mtcars,options=list(columnDefs = 
     list(list(visible=FALSE, targets=which(colnames(mtcars)=='helper'))))) %>% 
    formatStyle('helper', target = 'row', 
    backgroundColor = styleEqual(c(1,0), c('#EDEDED','#00adff'))) 

hoffe, das hilft!

enter image description here

+0

Ich fand gerade diese Lösung, Vielen Dank! Ich bin jetzt auf ein ähnliches Problem fest, wo der StyleEqual nicht so hilfreich ist. Ich muss Zeilen markieren, bei denen die Spaltenzelle> = eine bestimmte Zahl ist. Ich habe viele verschiedene Java Script Beispiele ausprobiert und war nicht erfolgreich. Irgendwelche Gedanken? – Avioli

+0

Sie können StyleInterval versuchen: 'backgroundColor = styleInterval (6, c ('', 'green'))) färbt alle Zeilen, deren Wert größer als 6 ist. Könnten Sie bitte diese Antwort akzeptieren, wenn sie hilfreich war? Danke – Florian

+0

danke Mann du hast es geschafft! Wirklich hilfreich – Avioli

Verwandte Themen