【发布时间】:2017-06-13 07:40:54
【问题描述】:
我想根据分位数为表格的每一列的单元格着色,并为每一列执行此操作。对于这个练习,我一直在使用 DT 包。
您将在下面找到一个可重现的示例,该示例根据整个表格的数字分位数对单元格进行着色:
set.seed(1)
df = as.data.frame(cbind(matrix(round(rnorm(50), 3), 10), sample(0:1, 10, TRUE)))
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(cuts=brks,values=clrs))
我也想这样做,但基于列。这是我为此编写的代码:
set.seed(1)
df = as.data.frame(cbind(matrix(round(rnorm(50), 3), 10), sample(0:1, 10, TRUE)))
brks <- apply(df,MARGIN=2,FUN=quantile,probs=seq(.05, .95, .05))
clrs <- round(seq(255, 40, length.out = nrow(brks)), 0) %>% {paste0("rgb(255,", ., ",", ., ")")}
r=replicate(ncol(brks),clrs)
r=as.vector(r)
r=append(r,"rgb(255,20,20)")
brks <- as.vector(brks)
datatable(df) %>% formatStyle(names(df), backgroundColor = styleInterval(cuts=brks,values=r))
我开始对列进行应用以获取基于列的分位数 (brks) 并创建匹配的复制颜色 (r)。然后我把这些矩阵作为向量,因为styleInterval 只接受向量。此外,我将一个新元素附加到向量 r,因为我认为 styleInterval 的参数“值”应该比参数“cuts”多一个元素。
我的代码有一些问题,尤其是“cuts' must be sorted越来越多”出现了。有没有人想办法解决它?
【问题讨论】:
标签: css r formatting background-color dt