在我的DT中,我正在尝试为每个单元格创建条件格式,其中格式化基于每行的不同规则。目标是在第1列和第2列之间创建简单的可视化比较
例如
如果[1,1]< [1,2]突出[1,1]绿色& [1,2]红色
如果[2,1]< [2,2]突出[2,1]红色& [2,2]绿色
3月19日更新:为了方便起见,我建立了一个"胜利者" R中的列,我正在尝试将表中的数据与该列进行比较。
library(DT)
example.data <- data.frame(col.1 = rep(1, 2),
col.2 = rep(2, 2),
winner = c(1,2))
datatable(example.data,
options = list(
rowCallback = JS(
'function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {
if (parseFloat(aData[3] = 1)){
$("td:eq(1)", nRow).css("background-color", "green");
}
if (parseFloat(aData[3] = 2)){
$("td:eq(1)", nRow).css("background-color", "red");
}
if (parseFloat(aData[3] = 1)){
$("td:eq(2)", nRow).css("background-color", "red");
}
if (parseFloat(aData[3] = 2)) {
$("td:eq(2)", nRow).css("background-color", "green");
}
}'
)
))
上面的代码将第1列变为红色,第2列变为绿色。任何帮助,将不胜感激。
答案 0 :(得分:0)
前面代码中的错误是由于误操作=运算符,应该是==,并使用parseFloat将参数作为浮点传递。对于任何尝试执行类似任务的人,以下示例都应该有效。
datatable(example.data,
options = list(
rowCallback = JS(
'function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {
if (aData[3] == "1"){
$("td:eq(1)", nRow).css("background-color", "green");
}
if (aData[3] == "2"){
$("td:eq(1)", nRow).css("background-color", "red");
}
if (aData[3] == "1"){
$("td:eq(2)", nRow).css("background-color", "red");
}
if (aData[3] == "2") {
$("td:eq(2)", nRow).css("background-color", "green");
}
}'
)
))