我尝试根据当前的值为数据表中的每一行着色。例如,如果使用iris
数据集:
| Sepal.Length | Sepal.Width | Petal.Length | Petal.Width |种属|
| - ------|- ------|- ------|- ------|- ------|
| 5.1 |三、五|1.4岁|0.2分|塞托萨|
| 4.9 |三个|1.4岁|0.2分|塞托萨|
如果单元格值小于2(在任何列中),我希望第1行中的值显示为红色,否则显示为黑色。最后一列(Species
)将被排除。
对于第2行、第3行等,这将是不同的阈值。例如,如果单元格中的值小于4,则第2行将为红色。
我可以按如下方式更改给定行(不包括“物种”列)的颜色:
datatable(iris, options = list(pageLength = 5)) %>%
formatStyle(colnames(iris)[-5], target = "cell", color = styleRow(1, 'red'))
但是,如果我尝试将styleInterval添加到格式化中以实现我需要的内容,则不会再有任何内容被着色。如下所示:
datatable(iris, options = list(pageLength = 5)) %>%
formatStyle(colnames(iris)[-5], target = "cell", color = styleRow(1, styleInterval(2, c('red','black')))) %>%
formatStyle(colnames(iris)[-5], target = "cell", color = styleRow(2, styleInterval(4, c('red','black'))))
值得注意的是,我也用target = "row"
尝试过上面的方法,但没有成功。
我可以使用它来正常地为列着色,例如,将虹膜数据集转置:
datatable(as.data.frame(t(iris))) %>% formatStyle("V1", color = styleInterval(2, c('red','black'))) %>% formatStyle("V2", color = styleInterval(4, c('red','black')))
但是,我找不到一种方法将彩色数据表转置回来以进行显示。
最后,在我的实际数据表中,我必须根据每行不同的值间隔对几行进行此操作。这也需要适用于不同列数的不同数据集。所以我不认为手动更改每个单元格的CSS颜色是可行的。
1条答案
按热度按时间ubbxdtey1#
更新:
如果你有多行而不是只有一行需要修改,那么我们可以根据所需的条件创建一个所有颜色的矩阵/数据框,并相应地设置颜色;(关于原始回调函数https://stackoverflow.com/a/60093182/6461462,请参考此答案)。
x一个一个一个一个x一个一个二个x