发光表格式

问题描述 投票:2回答:1

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

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({

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

shinyApp(ui = ui, server = server)
r shiny dt formattable
1个回答
0
投票

我不确定您到目前为止对formattable所做的尝试,但是您应该可以在闪亮的应用程序中将其与DT一起使用。

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

Other 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")
        )
      )
    )
  )
})
© www.soinside.com 2019 - 2024. All rights reserved.