代码之家  ›  专栏  ›  技术社区  ›  bretauv

R Shiny:formattable不会更改任何内容

  •  0
  • bretauv  · 技术社区  · 6 年前

    我正在编写一个闪亮的应用程序,我想使用formattable在条件下为一些结果上色。 我遵循了提供的解决方案 here here 但这些都不管用。令人费解的是,下面的示例并没有给结果上色(至少对我来说是这样),尽管显示了表:

    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)
    
    

    有人有解决办法吗?

    0 回复  |  直到 6 年前
        1
  •  0
  •   bretauv    6 年前

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

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

    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)
    

    现在可以了