【问题标题】:How to format multiple columns separately in R Shiny如何在 R Shiny 中分别格式化多列
【发布时间】:2020-06-29 23:55:44
【问题描述】:

我是 R Shinyapps 的新手,因此,我的问题可能听起来有点愚蠢。

请接受我的道歉。

我正在努力根据所需的列格式将数据放入表中。

目前,表格如下所示:

所以我在表格中有 11 列,我希望这些列的格式如下:

  • “Col-2 到 Col-7”都具有 1 位小数位。
  • “Col-8 到 Col-10”均具有 0 位小数位(无小数)。
  • “Col-11”有 2 位小数。

关于如何做到这一点的任何建议?

我使用了下面的“renderTable”函数来生成表格:

output$table <- renderTable(align="c", digits = 1, width="auto", na="-", subset(all, PRODUCT_NAME==as.character(input$product_choice))
                          [,c("Col-1", "Col-2", "Col-3", "Col-4", "Col-5", "Col-6", "Col-7", "Col-8", 
                              paste0("Col-9 ",input$cur), paste0("Col-10 ",input$cur), "Col-11")],)

我曾尝试使用“Digits = 1”,但它会将所有列格式化为小数点后 1 位。

我无法找到将数字参数应用于不同列中不同小数位的方法。 但是,我需要单独格式化列 我需要这里的专家来帮助我,请。 我会非常感谢你。

【问题讨论】:

    标签: r shiny shinydashboard


    【解决方案1】:

    使用包DT,您可以选择要按名称或编号格式化的列。此外,formatRound 不是此包提供的唯一格式类型(请参阅formatCurrency 等):

    library(shiny)
    library(DT)
    
    ui <- fluidPage(
      dataTableOutput("test")
    )
    
    server <- function(input, output, session) {
    
      output$test <- renderDataTable({
        DT::datatable(iris) %>% 
          formatRound("Petal.Length", digits = 2, mark = "") %>%
          formatRound(1, digits = 4)
      })
    
    }
    
    shinyApp(ui, server)
    

    【讨论】:

      【解决方案2】:

      如果 renderTable 不能让您完全控制所需的选项,最好的办法是使用 sprintf() 将列格式化为字符,这样您就可以完全控制可以显示的内容。

      之后,您可以使用 renderTable() 中的 align= 参数将它们作为数字右对齐,这让您可以为每列指定单独的对齐方式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-01
        相关资源
        最近更新 更多