闪亮的表格格式

我是Shiny的新手,并且拥有使用mtcars的基本的闪亮应用程序。我有多个带有一些输入下拉菜单的选项卡,并将输出显示为DT表。一切正常,但是我现在想使用一些格式,例如formattable。我想包括的一些格式是基本百分比,十进制。另外,我想添加一些基于单元格的突出显示。我尝试了多种格式化功能,但没有任何运气。我已在服务器端输出中添加了功能,但无法获得正确的组合。下面是我的闪亮代码:

library(shiny)
library(dplyr)
library(DT)

ui <- fluidPage(

titlePanel("mtcars"),sidebarLayout(

sidebarPanel(

  selectInput("cyl","cyl:",c(unique(as.character(mtcars$cyl)))),selectInput("gear","gear:",c("All",unique(as.character(mtcars$gear)))),width=2),mainPanel(
      tabsetPanel(
        id = 'dataset',tabPanel("Summary",DT::dataTableOutput("Summary")),tabPanel("Detail",DT::dataTableOutput("Detail"))))))
    server <- function(input,output) {

    output$Detail <- renderDataTable(datatable({
       data <- mtcars
         if (input$cyl != "All") {
             data <- data[data$cyl == input$cyl,]
             }
         if (input$gear != "All") {
             data <- data[data$gear == input$gear,]
             }
         data
         }))

    output$Summary <- renderDataTable({

    mtcars %>% 
      filter(cyl==input$cyl)  %>% 
      group_by(gear) %>%
      summarise(mpg = median(mpg),count = n())  %>% 
      ungroup() %>%
      arrange(desc(count))
    })}

shinyApp(ui = ui,server = server)
a962319828 回答:闪亮的表格格式

我不确定您到目前为止在formattable上尝试过什么,但是您应该可以在闪亮的应用程序中与DT一起使用它。

这是一个可以尝试的简单示例。这使mpg列成为一个百分比。另外,如果为count列着色为绿色。

其他vignettes可用于带有formattable软件包的其他选项。

output$Summary <- renderDataTable({
  my_data <- mtcars %>% 
    filter(cyl==input$cyl)  %>% 
    group_by(gear) %>%
    summarise(mpg = median(mpg),count = n())  %>% 
    ungroup() %>%
    arrange(desc(count))

  # Make percent,for example
  my_data$mpg <- percent(my_data$mpg)

  # Return formattable datatable
  return(
    as.datatable(
      formattable(
        my_data,list(
          count = color_tile("transparent","green")
        )
      )
    )
  )
})
,

要完成Ben的回答,即使您说要使用formattable,我认为DT中也有足够的选项可以按照您想要的方式自定义表格。

这是您的示例(由于未指定单元格的格式,因此是随机定制的):

library(shiny)
library(dplyr)
library(DT)

ui <- fluidPage(

  titlePanel("mtcars"),sidebarLayout(

    sidebarPanel(

      selectInput("cyl","cyl:",c(unique(as.character(mtcars$cyl)))),selectInput("gear","gear:",c("All",unique(as.character(mtcars$gear)))),width=2),mainPanel(
      tabsetPanel(
        id = 'dataset',tabPanel("Summary",DT::dataTableOutput("Summary")),tabPanel("Detail",DT::dataTableOutput("Detail"))))))

server <- function(input,output) {

  output$Detail <- renderDataTable(datatable({
    data <- mtcars
    if (input$cyl != "All") {
      data <- data[data$cyl == input$cyl,]
    }
    if (input$gear != "All") {
      data <- data[data$gear == input$gear,]
    }
    data
  }))

  output$Summary <- renderDataTable({

    your_data <- mtcars %>% 
      filter(cyl==input$cyl)  %>% 
      group_by(gear) %>%
      summarise(mpg = median(mpg),count = n())  %>% 
      ungroup() %>%
      arrange(desc(count))

    datatable(your_data) %>%
      formatPercentage(columns = c("mpg","gear")) %>%
      formatRound(columns = c("count"),digits = 3) %>%
      formatStyle(columns = "mpg",valueColumns = "gear",backgroundColor = styleEqual(c(3,4,5),c("red","blue","green")))
  })}

shinyApp(ui = ui,server = server)

有关更多详细信息,请参见here,有关颜色样式的几个示例,请参见here

本文链接:https://www.f2er.com/2392837.html

大家都在问