Shiny DT列的着色

Shiny DT列的着色,shiny,Shiny,有没有办法给下面的“电子邮件”栏涂上颜色(如果“电子邮件”大于“电话”,则为红色,否则为黄色)。这里的挑战是,我们是否也可以隐藏“调用”列 library(shiny) library(tidyverse) library(DT) x <- tibble( Unit = c("Sales", "Marketing", "HR"), Calls = c(100, 150, 120), Emails = c(200,

有没有办法给下面的“电子邮件”栏涂上颜色(如果“电子邮件”大于“电话”,则为红色,否则为黄色)。这里的挑战是,我们是否也可以隐藏“调用”列

library(shiny)
library(tidyverse)
library(DT)

x <- tibble(
  Unit = c("Sales", "Marketing", "HR"), 
  Calls = c(100, 150, 120), 
  Emails = c(200, 220, 230), 
  Calls_goal = c(1, 0, 0), 
  Emails_goal = c(0, 1, 1)
)


ui <- fluidPage(
  
  mainPanel(
    DT::dataTableOutput("table")
  )
)

server <- function(input, output) {
  
  output$table <- DT::renderDataTable({
    
    # Can't use both visible = FALSE and rownames = FALSE
    
    datatable(x,
              rownames = TRUE)
    
  })
}

shinyApp(ui = ui, server = server)
库(闪亮)
图书馆(tidyverse)
图书馆(DT)
x这应该做到:

我已经创建了一个名为
diff
的额外专栏,在这里我们减去了电话和电子邮件之间的差异,我们将使用这个专栏来着色。然后,我们可以使用
columnDefs
功能根据您对用户的请求将其与Calls列一起隐藏。对于实际的颜色,我们可以使用
formatStyle
,这已经有很好的文档记录了

库(闪亮)
图书馆(tidyverse)
图书馆(DT)
数据
library(shiny)
library(tidyverse)
library(DT)

data <- tibble(
    Unit = c("Sales", "Marketing", "HR"), 
    Calls = c(100, 150, 120), 
    Emails = c(200, 220, 230), 
    Calls_goal = c(1, 0, 0), 
    Emails_goal = c(0, 1, 1)
)
data$diff <- data$Emails - data$Calls

ui <- fluidPage(
    
    mainPanel(
        DT::dataTableOutput("table")
    )
)

server <- function(input, output) {
    
    output$table <- DT::renderDataTable({
        datatable(data,
                  options = list(
                      columnDefs=list(
                          list(visible=FALSE, targets=c(1,5))
                      )
                  ),rownames = F)%>% 
            formatStyle("Emails",valueColumns = 'diff',BackgroundColor = styleInterval(c(0), c("Yellow",'Red')))
        
    })
}

shinyApp(ui = ui, server = server)