条件格式数据表DT R.

时间:2016-11-06 02:20:21

标签: javascript css r dt

我是R中DT包的忠实粉丝。我想复制一些Excel条件格式化的表,但发现很难访问样式功能。

具体来说,我希望能够创建一个允许用户调用数据表的行/列并对其应用一些条件格式的函数,类似于在excel中完成的方式。对于像我这样的新手R用户来说,这将是一个更加强大的功能,而且还可以加快其他人的流程。与热图不同,条件格式对于行/列不是所有相同类型都很重要,因此您需要单独执行每个行。能够明确高值和低值选项标记是很好的。

我发现您可以创建中断,如以下call页面

中的示例所示
    # create 19 breaks and 20 rgb color values ranging from white to red
brks <- quantile(df, probs = seq(.05, .95, .05), na.rm = TRUE)
clrs <- round(seq(255, 40, length.out = length(brks) + 1), 0) %>%
  {paste0("rgb(255,", ., ",", ., ")")}
datatable(df) %>% formatStyle(names(df), backgroundColor = styleInterval(brks, clrs))

但是我不知道如何应用于单个行,虽然看起来你可以通过名称调用它们,如通过formatStyle()和背景颜色看到this,但是你仍然没有阴影渐变你需要知道行/列名称,这有点太多了

创建自定义函数的任何帮助都将对R数据库社区IMO有很大帮助。

3 个答案:

答案 0 :(得分:2)

你可以尝试这样的事情:

 # create 19 breaks and 20 hex color values ranging from red to green using white around the median
brks <- quantile(df, probs = seq(.05, .95, .05), na.rm = TRUE)
colfunc <- colorRampPalette(c("red","white","green"))
clrs <- colfunc(length(brks) + 1)
datatable(df) %>% formatStyle(names(df), backgroundColor = styleInterval(brks, clrs))

答案 1 :(得分:1)

以防万一有人碰到这个,这是我写的一个函数,类似于excel菜单

    column_cond_format = function(col_max, col_min, pal =c('red','white', 'green')) {
  stop_color_max = col_max ##set as max(column)
  stop_color_min = col_min
  brks <- quantile(c(stop_color_min,stop_color_max), probs = seq(.05, .95, .05), na.rm = TRUE) ## set max/min
  myPal = shades::gradient(pal, 18, space="Lab")
  clrs = c(myPal[1] , myPal, myPal[length(myPal)])

  return(list(brks= brks, clrs = clrs))
}

答案 2 :(得分:-1)

因此backgroundColor参数包含一个JS_EVAL类,它只是JavaScript,对于上面的代码(使用示例中设置的断点),值如下所示

"value <= -1.5504 ? 'rgb(255,255,255)' : value <= -0.9689 ? 'rgb(255,244,244)' : value <= -0.7885 ? 'rgb(255,232,232)' : value <= -0.6168 ? 'rgb(255,221,221)' : value <= -0.28425 ? 'rgb(255,210,210)' : value <= -0.1183 ? 'rgb(255,198,198)' : value <= 0 ? 'rgb(255,187,187)' : value <= 0.0754000000000001 ? 'rgb(255,176,176)' : value <= 0.2935 ? 'rgb(255,164,164)' : value <= 0.443 ? 'rgb(255,153,153)' : value <= 0.46745 ? 'rgb(255,142,142)' : value <= 0.5344 ? 'rgb(255,131,131)' : value <= 0.5647 ? 'rgb(255,119,119)' : value <= 0.979 ? 'rgb(255,108,108)' : value <= 1 ? 'rgb(255,97,97)' : value <= 1 ? 'rgb(255,85,85)' : value <= 1.1765 ? 'rgb(255,74,74)' : value <= 1.3743 ? 'rgb(255,63,63)' : value <= 1.65975 ? 'rgb(255,51,51)' : 'rgb(255,40,40)'"

现在如果有人可以帮我理解如何改变颜色pallett(比如从红色转换为绿色)我认为实现一个易于使用的功能并不是那么难,虽然我仍然不知道如何能够使用其名称引用旁边的列/行(尽管似乎有一个参数valueColumns可以调用