我正在尝试根据第2列中的数据对表格的每一行进行颜色编码。参见下面的图片。
基本上给你一个例子,代码需要依赖于第二列,所以如果它说撒哈拉以南非洲,那么整行都是一定的颜色,拉丁美洲和加勒比海也是如此颜色。 “区域”列右侧还有一些其他列。我想我可能需要在dataTable函数中使用一些if语句,但下面会提到任何帮助。
output$Composite <- renderDataTable(datatable(FVI_DATA_COMPOSITE,
options = list(
columnDefs = list(list(className = 'dt-center', targets = 3:9))))
%>% formatRound(c(3:9), 2))
编辑:当前不起作用的新代码块。
output$Composite <- renderDataTable(datatable(FVI_DATA_COMPOSITE,
options = list(
columnDefs = list(list(className = 'dt-center', targets = 3:9)), pageLength = 50, lengthChange = FALSE))
%>% formatRound(c(3:9), 2))
%>% formatStyle(0, target = "row",
backgroundColor = styleEqual(which(FVI_DATA_COMPOSITE$Region == "Sub-Saharan Africa")[1], "red"))
答案 0 :(得分:3)
target = "row"
参数集,则实际上可以在没有JS的情况下格式化整行:
library(shiny)
library(magrittr)
library(DT)
shinyApp(
ui = fluidPage(
fluidRow(
column(12,
dataTableOutput('table')
)
)
),
server = function(input, output) {
output$table <- renderDataTable({
datatable(iris) %>%
formatStyle(0, target = "row", backgroundColor = styleEqual(which(iris$Sepal.Length < 5)[1], "red"))
})
}
)
}
答案 1 :(得分:0)
library(DT)
datatable(mtcars) %>%
formatStyle(0,
backgroundColor = styleEqual(c('Mazda RX4', 'Mazda RX4 Wag'),
c('green', 'red')
)
)
有条件地格式化整行,另一方面,我们必须在rowCallback
选项中使用一些JS。
这些方面的东西:
library(DT)
datatable(FVI_DATA_COMPOSITE,
options = list(
rowCallback = JS('function(nRow, aData) {
if (aData[1] == "Sub-Saharan Africa")
$(nRow).css("background-color", "#9BF59B");
if (aData[1] == "Latin America ")
$(nRow).css("background-color", "#yellow");
}'),
columnDefs = list(list(className = 'dt-center', targets = 3:9))
)
) %>%
formatRound(c(3:9), 2))