在 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)
我遇到了以下问题。我想有条件地格式化我的列,以便第 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)