如何在R中突出显示颜色中的特定单元格值

如何在R中突出显示颜色中的特定单元格值,r,shiny,R,Shiny,DF1、DF2和DF3是我拥有的三个数据帧(在选项中)。在从第二个数据集中选择DF3时,我希望在该特定单元格的背景中以绿色突出显示第7行“Salary”列中的值“600.00”。在R中最有效的方法是什么?因为我是新来的,有人能帮我吗 下面是我的代码: library(shiny) DF1 <- data.frame( emp_id = c(1:5), emp_name = c("Rick","Dan","Michelle"

DF1、DF2和DF3是我拥有的三个数据帧(在选项中)。在从第二个数据集中选择DF3时,我希望在该特定单元格的背景中以绿色突出显示第7行“Salary”列中的值“600.00”。在R中最有效的方法是什么?因为我是新来的,有人能帮我吗

下面是我的代码:

library(shiny)

DF1 <- data.frame(
  emp_id = c(1:5),
  emp_name = c("Rick","Dan","Michelle","Ryan","Gary"),
  salary = c(623.3,515.2,611.0,735.0,844.25))
DF1


DF2 <- data.frame(
  emp_id = c(1:6),
  emp_name = c("Rick","Dan","Michelle","Ryan","Gary", "Alex"),
  salary = c(623.3,515.2,611.0,729.0,843.25, 243.5))


DF3 <- data.frame(
  emp_id = c(1:7),
  emp_name = c("Rick","Dan","Michelle","Ryan","Gary", "Alex", "Christan"),
  salary = c(623.3,515.2,611.0,729.0,843.25, 243.5, 600.0))

shinyApp(
  ui = tagList(
    navbarPage(
      fluidRow(column(6, selectInput("dataset1", "Choose first dataset:",
                                     choices = c("SelectDataSet ", "DF1", "DF2", "DF3"))),
               
               column(6, selectInput("dataset2", "Choose second dataset:",
                                     choices = c("SelectDataSet ", "DF1", "DF2", "DF3")))
      ),
      # Button
      downloadButton("downloadData5", "Download")
    ),
    mainPanel(
      fluidRow(column(6,  tableOutput("table1")), 
               column(6,  tableOutput("table2"))
      )
    )
  ),
  
server = function(input, output,session) {
  datasetInput1 <- reactive({
      switch(input$dataset1,
             "DF1" = DF1,
             "DF2" = DF2,
             "DF3" = DF3)
    })
  datasetInput2 <- reactive({
      switch(input$dataset2,
             "DF1" = DF1,
             "DF2" = DF2,
             "DF3" = DF3)
    })
    
    output$table1 <- renderTable({
      datasetInput1()
    })
    
    output$table2 <- renderTable({
      datasetInput2()
    })
    
  }
)
shinyApp(ui, server)
库(闪亮)
DF1您可以使用它,它允许使用
cell\u spec
单独定义每个单元格:

library(shiny)
library(kableExtra)

DF1 <- data.frame(
  emp_id = c(1:5),
  emp_name = c("Rick","Dan","Michelle","Ryan","Gary"),
  salary = c(623.3,515.2,611.0,735.0,844.25))
DF1


DF2 <- data.frame(
  emp_id = c(1:6),
  emp_name = c("Rick","Dan","Michelle","Ryan","Gary", "Alex"),
  salary = c(623.3,515.2,611.0,729.0,843.25, 243.5))


DF3 <- data.frame(
  emp_id = c(1:7),
  emp_name = c("Rick","Dan","Michelle","Ryan","Gary", "Alex", "Christan"),
  salary = c(623.3,515.2,611.0,729.0,843.25, 243.5, 600.0))

# Define specific cell spec
DF3$salary <- cell_spec(DF3$salary, background = c(rep("white",6), "green"))

shinyApp(
  ui = tagList(
    navbarPage(
      fluidRow(column(6, selectInput("dataset1", "Choose first dataset:",
                                     choices = c("SelectDataSet ", "DF1", "DF2", "DF3"))),
               
               column(6, selectInput("dataset2", "Choose second dataset:",
                                     choices = c("SelectDataSet ", "DF1", "DF2", "DF3")))
      ),
      # Button
      downloadButton("downloadData5", "Download")
    ),
    mainPanel(
      fluidRow(column(6,  tableOutput("table1")), 
               column(6,  tableOutput("table2"))
      )
    )
  ),
  
  server = function(input, output,session) {
    datasetInput1 <- reactive({
      switch(input$dataset1,
             "DF1" = DF1,
             "DF2" = DF2,
             "DF3" = DF3)
    })
    datasetInput2 <- reactive({
      switch(input$dataset2,
             "DF1" = DF1,
             "DF2" = DF2,
             "DF3" = DF3)
    })
    output$table1 <- function() {
      req(datasetInput1() )
      datasetInput1() %>%
        knitr::kable("html",escape = F) %>% kable_styling()
    }
    
    output$table2 <- function() {
      req(datasetInput2() )
      datasetInput2() %>%
        knitr::kable("html",escape = F) %>% kable_styling()
    }
    
  }
)
shinyApp(ui, server)
库(闪亮)
图书馆(kableExtra)

DF1如果您不介意使用
DT
,您可以在第二次显示中为该单元格的背景着色

library(DT)

shinyApp(
    ui = tagList(
        navbarPage(
            fluidRow(column(6, selectInput("dataset1", "Choose first dataset:",
                                           choices = c("SelectDataSet ", "DF1", "DF2", "DF3"))),
                     
                     column(6, selectInput("dataset2", "Choose second dataset:",
                                           choices = c("SelectDataSet ", "DF1", "DF2", "DF3")))
            ),
            # Button
            downloadButton("downloadData5", "Download")
        ),
        mainPanel(
            fluidRow(column(6,  dataTableOutput("table1")), 
                     column(6,  dataTableOutput("table2"))
            )
        )
    ),
    
    server = function(input, output,session) {
        
        DF1 <- data.frame(
            emp_id = c(1:5),
            emp_name = c("Rick","Dan","Michelle","Ryan","Gary"),
            salary = c(623.3,515.2,611.0,735.0,844.25))
        
        
        DF2 <- data.frame(
            emp_id = c(1:6),
            emp_name = c("Rick","Dan","Michelle","Ryan","Gary", "Alex"),
            salary = c(623.3,515.2,611.0,729.0,843.25, 243.5))
        
        
        DF3 <- data.frame(
            emp_id = c(1:7),
            emp_name = c("Rick","Dan","Michelle","Ryan","Gary", "Alex", "Christan"),
            salary = c(623.3,515.2,611.0,729.0,843.25, 243.5, 600.0))
        
        datasetInput1 <- reactive({
            switch(input$dataset1,
                   "DF1" = DF1,
                   "DF2" = DF2,
                   "DF3" = DF3)
        })
        datasetInput2 <- reactive({
            switch(input$dataset2,
                   "DF1" = DF1,
                   "DF2" = DF2,
                   "DF3" = DF3)
        })
        
        output$table1 <- renderDataTable({
            datasetInput1()
        })
        
        output$table2 <- renderDataTable({
            if(input$dataset2 != "SelectDataSet ") {
                # Get the dataset
                d = datasetInput2()
                # Add a column specifying the background color: light green if
                # salary = 600; nothing otherwise
                d$background.color = ifelse(d$salary == 600, "lightgreen", NA)
                # Output the DataTable; hide the new 4th column we just created
                # but use it to specify the background color of the "salary"
                # column
                d %>%
                    datatable(options = list(columnDefs = list(list(targets = 4,
                                                                    visible = F)))) %>%
                    formatStyle("salary",
                                backgroundColor = styleEqual(d$salary,
                                                             d$background.color))
            }
        })
        
    }
)
库(DT)
shinyApp(
ui=标记列表(
导航栏页(
fluidRow(第(6)列,选择输入(“数据集1”,“选择第一个数据集:”,
choices=c(“SelectDataSet”、“DF1”、“DF2”、“DF3”),
列(6),选择输入(“数据集2”,“选择第二个数据集:”,
choices=c(“SelectDataSet”、“DF1”、“DF2”、“DF3”))
),
#钮扣
下载按钮(“下载数据5”,“下载”)
),
主面板(
fluidRow(第6列,dataTableOutput(“表1”)),
列(6,dataTableOutput(“表2”))
)
)
),
服务器=功能(输入、输出、会话){

DF1谢谢;我只想从第二个数据集选择中获得DF3上的颜色高亮显示。您需要为第一个选择制作一份不带样式的
DF3
,为第二个选择制作一个样式化版本。为了更好地理解样式化的作用,请尝试
knitr::kable(“html”,escape=T)
而不是
knitr::kable(“html”),escape=F)
查看后面生成的HTML。