R 闪亮颜色代码表行取决于单元格内容

Owl*_*ieW 1 r shiny shinydashboard

我正在尝试根据第 2 列中的数据对表格的每一行进行颜色编码。请参见下图。

在此处输入图片说明

基本上给你一个例子,代码需要根据第二列工作,所以如果它说撒哈拉以南非洲,例如,将整行设为某种颜色,拉丁美洲和加勒比地区相同,但颜色不同。Region 列的右侧还有一些其他列。我想我可能需要在下面的 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))
Run Code Online (Sandbox Code Playgroud)

编辑:当前不起作用的新代码块。

 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"))
Run Code Online (Sandbox Code Playgroud)

Big*_*ist 6

如果您使用 settarget = "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"))
    })
  }
)
}
Run Code Online (Sandbox Code Playgroud)