首页 > 解决方案 > R Shiny:格式化不会改变任何东西

问题描述

我正在编写一个闪亮的应用程序,我想使用 formattable 在条件下为某些结果着色。我遵循了此处 此处 提供的解决方案,但这些都不起作用。令人费解的是,尽管显示了表格,但下面的示例并未对结果着色(至少对我而言):

library(DT)
library(shiny)
library(shinydashboard)
library(data.table)
library(formattable)


ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody(
    tabsetPanel(box(formattableOutput("dat"))
    )
  )
)

server <- function(input, output) {

data <- head(mtcars)

  output$dat <- renderFormattable({
    formattable(data, 
                disp = formatter("span", 
                                 style = x ~ style(color = ifelse(x < 200, "green", "gray")))
    )
  })

}


shinyApp(ui, server)

有人有解决方案吗?

标签: rshiny

解决方案


这个答案来自 KoderKow(https://community.rstudio.com/t/r-shiny-formattable-does-not-change-anything/33465):

formattable() 中 data 后面的参数是一个列表,我们需要做的就是将 disp 包装在一个 list() 函数中。下面的工作代码!

library(DT)
library(shiny)
library(shinydashboard)
library(data.table)
library(formattable)


ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody(
    tabsetPanel(box(formattableOutput("dat"))
    )
  )
)

server <- function(input, output) {

  data <- head(mtcars)

  output$dat <- renderFormattable({
    formattable(data, list(
                disp = formatter("span", 
                                 style = x ~ style(color = ifelse(x < 200, "green", "gray")))
    ))
  })

}


shinyApp(ui, server)

现在可以使用


推荐阅读