R Shiny DT 根据字符串模式更改单元格颜色

R Shiny DT change cell colour based on string pattern

我有一个 DT 数据 table,其中包含如下字符串:

我想更改单元格的颜色,使字符串包含“OK”的单元格变为绿色,字符串包含“ERROR”的单元格变为红色。我知道我可以使用 formatStylestyleEqual 更改单元格颜色,但在匹配字符串模式时它似乎不起作用。

library(DT)

render <- c(
  "function(data, type, row){",
  "  if(type === 'display'){",
  "    var color = /OK$/.test(data) ? 'green' : (/ERROR$/.test(data) ? 'red' : 'black');",
  "    data = '<span style=\"color: ' + color + ';\">' + data + '</span>';",
  "  }",
  "  return data;",
  "}"
)

dat <- data.frame(
  a = c("1 - OK", "1 - ERROR", "2 - ERROR"), 
  b = c("3 - ERROR", "2 - OK", "3 - OK")
)

datatable(
  dat, 
  options = list(
    columnDefs = list(
      list(targets = c(1, 2), render = JS(render))
    )
  )
)