2016-03-31 14 views
0

Ich möchte alle außer den NA-Werte Farbe mit rhandsontable anzeigen lassen. Wenn Sie beispielsweise den folgenden Code in der R-Konsole ausführen, in dem rhandsontable installiert ist, ist die erste Spalte grau, weil rhandsontable nicht mit der NA und den numerischen Werten umgehen kann, glaube ich. Wenn Sie jedoch die eine NA entfernen und die Zelle leer machen, erhalten die übrigen Zellen ihre Farbe zurück.Entfernen Sie NA-Werte in rhandsontable Heatmap

> MAT = matrix(rnorm(50), nrow = 10, dimnames = list(LETTERS[1:10], 
+             letters[1:5])) 
> MAT[1,1] <- NA 
> rhandsontable(MAT) %>% hot_heatmap() 

In meinem aktuellen Datensatz Ich habe eine Menge von NA-Wert und ich mag nicht jede dieser Spalten grau erscheinen. Wie sage ich rhandsontable, nur die NA-Werte auszugrauen, und nicht den Rest in der Spalte?

Antwort

0

ich einen Hack haben ...

I NA ersetzt Werte mit einem sehr spezifischen 0,001.

Und dann gezwickt ich den Renderer, so dass es Farben Zellen mit 0.001 hellgrau:

# Used by hot_heatmap 
renderer_heatmap = function(color_scale) { 
    renderer = gsub("\n", "", " 
        function (instance, td, row, col, prop, value, cellProperties) { 
        Handsontable.renderers.TextRenderer.apply(this, arguments); 
        heatmapScale = chroma.scale(['%s1', '%s2']); 
        if (instance.heatmap[col]) { 
        mn = instance.heatmap[col].min; 
        mx = instance.heatmap[col].max; 
        pt = (parseInt(value, 10) - mn)/(mx - mn); 
        if (value == 0.001) { 
         td.style.backgroundColor = 'lightgrey'; 
        } else { 
         td.style.backgroundColor = heatmapScale(pt).hex(); 
        } 
        } 
        } 
        ") 
    renderer = gsub("%s1", color_scale[1], renderer) 
    renderer = gsub("%s2", color_scale[2], renderer) 
    renderer 
} 

Nicht meine große Stunde, und würde bessere Antworten begrüßen zu können!