R语言 删除可处理热图中的NA值

31moq8wy  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(154)

我想让除了NA值以外的所有值都使用rhandsontable显示颜色。例如,如果你在安装了rhandsontable的R控制台中运行下面的代码,第一列将是灰色的,因为我相信rhandsontable不能处理NA和数值。但是,如果你删除一个NA,使单元格为空,其余的单元格将恢复它们的颜色。

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

字符串
在我的实际数据集中,我有很多NA值,我不希望这些列中的每一列都显示为灰色。我如何告诉rhandsontable只灰化NA值,而不是列中的其余值?

6xfqseft

6xfqseft1#

我有一个hack...
我将NA值替换为非常具体的0.001。
然后我调整了渲染器,使其用0.001的浅灰色对单元格进行着色:

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

字符串
这不是我最好的时刻,希望得到更好的答案!

dw1jzc5e

dw1jzc5e2#

rhandsontable的现代版本(我有0.3.7)通过将这些单元格显示为灰色而不影响其他单元格的颜色来正确处理NA。

相关问题