在 R Shiny 上下文中编辑后,DT callback/conditional 样式不起作用

DT callback/conditional styling doesn't work after editing in an R Shiny context

我遇到了以下问题。我想有条件地格式化我的列,以便第 2 列中的非正值显示为红色。我还希望在编辑单元格后保持此条件。例如:

library(DT)
df <- data.frame(
     col1 = 1:5,
     col2 = c(-1,-1,0,1,1)
   )
datatable(df,editable = T)%>%
formatStyle(
2,
color = styleInterval(cuts = 0,values = c("red","black"))
)

它在 RStudio 的查看器部分显示时有效 IDE。当我编辑单元格值时,颜色也会更新以反映新值。

然而,当我 运行 它在 R Shiny 中时:

ui <- fluidPage(
  dataTableOutput("test")
)
server <- function(input,output,sesion){
  output$test <- DT::renderDataTable({
    df <- data.frame(
      col1 = 1:5,
      col2 = c(-1,-1,0,1,1)
    )
    datatable(df,editable = T)%>%
      formatStyle(
        2,
        color = styleInterval(cuts = 0,values = c("red","black"))
      )
  })
}
shinyApp(ui,server)

回调变得完全没有响应。无论我如何尝试编辑单元格值,初始化时染成红色的单元格都将保持红色。有人可以阐明这种现象是如何发生的以及我该如何解决这个问题吗?

这适用于选项 server = FALSE

library(shiny)
library(DT)

ui <- fluidPage(
  DTOutput("test")
)
server <- function(input,output,sesion){
  output$test <- renderDT({
    df <- data.frame(
      col1 = 1:5,
      col2 = c(-1,-1,0,1,1)
    )
    datatable(df,editable = T)%>%
      formatStyle(
        2,
        color = styleInterval(cuts = 0,values = c("red","black"))
      )
  }, server = FALSE)
}
shinyApp(ui,server)