首页 > 解决方案 > Shiny R- 为什么我的输出数据表中不显示 formatStyle() 更改?

问题描述

我正在尝试使用 formatStyle() 在 Shiny 中更改输出表的格式和样式,但更改不可见。可能有什么问题?例如,我希望“是”为粗体,但最终结果并未显示这些更改。这是我的最终输出:

在此处输入图像描述

这是我的代码:

library(shiny)
library(dplyr)
library(DT)
library(readxl)
var_version_tables <- read_excel("test_2_filtros_2.xlsx")
df<-var_version_tables

ui <- fluidPage(
  selectInput("var_1", "Categories", choices = unique(df$var_1)),
  selectInput("var_2", "Tables", choices = NULL, multiple = T),
  DT::dataTableOutput("data")
)





server <- function(input, output, session) {
  categories <- reactive({
    filter(df, var_1 == input$var_1)
  })
  observeEvent(categories(), {
    choices <- unique(categories()$var_2)
    updateSelectInput(inputId = "var_2", choices = choices) 
  })
  
  
  output$data <- DT::renderDataTable({
    req(input$var_2)
    
    table<-categories() %>% 
      filter(var_2 %in% input$var_2) %>% 
      select(var_2, var_3)%>%
      mutate(result="Yes") %>%
      tidyr::pivot_wider(names_from = var_2, values_from = result, values_fill = "No")%>%
      rename(Columns=var_3)
    
    table_1<-DT::datatable(table, filter= 'top',options = list(order=list(0,'asc'), dom='t', pageLength= 100, autoWidth = TRUE),rownames = FALSE)
    table_2<-DT::formatStyle(table_1, columns = NULL, fontWeight = styleEqual(c('No', 'Yes'), c('normal', 'bold')))
    
    
    
    
    
    
    return(table_2)
    
    
    
    
    
  })
}

shinyApp(ui, server)






这是我的输入数据:

var_1 var_2 var_3
红色的 表格1 第 1 列
红色的 表格1 第 4 列
红色的 表格1 第 3 列
蓝色的 表2 第 1 列
蓝色的 表2 第 2 列
蓝色的 表2 第 3 列
蓝色的 表2 第 4 列
蓝色的 表3 第 3 列
蓝色的 表3 第 10 列
蓝色的 表3 第 15 列
蓝色的 表3 第 4 列
蓝色的 表3 第 5 列
粉色的 表4 第 1 列
粉色的 表4 第 2 列
粉色的 表4 第 11 列
粉色的 表4 第 10 列
粉色的 表4 第 5 列
粉色的 表4 第 6 列
粉色的 表4 专栏7
蓝色的 表5 第 1 列
蓝色的 表5 第 2 列
蓝色的 表5 第 3 列
黄色 表6 专栏9
黄色 表6 第 10 列
粉色的 表7 第 6 列
粉色的 表7 专栏7
粉色的 表7 专栏8

非常感谢。

标签: rshinydatatable

解决方案


而不是NULLforcolumns使用formatStyle来自 的列名table

    table_2 <-
      DT::formatStyle(table_1,
                      columns = colnames(table),
                      fontWeight = styleEqual(c('No', 'Yes'), c('normal', 'bold')))

在此处输入图像描述


推荐阅读