反应格式化在闪亮? [英] Reactive formattable in shiny?

查看:0
本文介绍了反应格式化在闪亮?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用Formattable为反应表中的某些值着色?

这里有一个可重复使用的示例:在我创建的反应结果表中,如果p值低于0.05,我希望将它们涂成红色。

library(DT)
library(shiny)
library(shinydashboard)
library(formattable)


ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(    
    selectizeInput("v.dependent", "", choices = names(mtcars), 
                                      selected = "mpg", multiple = FALSE),
    selectizeInput("predictor", "", choices = names(mtcars), 
                                      selected = "disp", 
                                      multiple = TRUE)),
  dashboardBody(
    tabsetPanel(
      tabPanel("test with mtcars",
               box(formattableOutput("tab"))
      )
    )
  )
)

server <- function(input, output) {

  dep.var <- reactive({
    out <- input$v.dependent
    out
  })

  ind.var <- reactive({
    out <- input$predictor
    out
  })

  var.selected <- reactive({
    out <- append(ind.var(), dep.var(), 0)
    out
  })

  user.selection <- reactive({
    mtcars[, names(mtcars) %in% var.selected()]
  })

  lmod <- reactive({
    lm(as.formula(paste(input$v.dependent, "~", paste(input$predictor, collapse = "+"))), data = user.selection())
  })

  output$tab <- renderFormattable({
    tmp <- summary(lmod())$coefficients
    colnames(tmp) <- c("Coefficients", "SD", "t statistic", "Pvalue")
    tmp <- signif(x = tmp, digits = 3)
    tmp <- formattable(tmp, list(Pvalue = formatter("span", 
                         style = x ~ style(color = ifelse(x < 0.05, style(color = "red", "black")))
      )))
  })

}


shinyApp(ui, server)

我知道如何处理"静态"表,但当我尝试使用此代码时,出现错误:

Warning: Error in formatC: 'format' must be one of {"f","e","E","g","G", "fg", "s"}

知道如何解决它吗?

推荐答案

您使用的是formattable.data.table的语法,但在您的示例中,tmp是一个行为不同的矩阵。您似乎希望它是一个数据帧,这样您就可以自己进行强制转换。此外,您似乎在ifelse中设置颜色时遇到了一些问题。这似乎做了您想做的事

output$tab <- renderFormattable({
    tmp <- summary(lmod())$coefficients
    colnames(tmp) <- c("Coefficients", "SD", "t statistic", "Pvalue")
    tmp <- signif(x = tmp, digits = 3)
    tmp <- as.data.frame(tmp)
    tmp <- formattable(tmp, list(
      Pvalue = formatter("span", style = x ~ style(color = ifelse(x < 0.05, "red", "black"))))
    )
  })

这篇关于反应格式化在闪亮?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆