如何在R中分别设置多个列的格式

如何在R中分别设置多个列的格式,r,shiny,shinydashboard,R,Shiny,Shinydashboard,我是R Shinyapps的新手,因此,我的问题可能听起来有点愚蠢 请接受我的道歉 我正在努力按照所需的列格式将数据放入表中 目前,该表如下所示: 因此,表中有11列,我希望这些列的格式如下: “Col-2至Col-7”均具有1位小数 “Col-8至Col-10”均具有0位小数(无小数) “Col-11”具有两位小数 有什么建议吗 我已使用以下“可渲染”函数生成表格: output$table <- renderTable(align="c", digits = 1, width="

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

请接受我的道歉

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

目前,该表如下所示:

因此,表中有11列,我希望这些列的格式如下:

  • “Col-2至Col-7”均具有1位小数
  • “Col-8至Col-10”均具有0位小数(无小数)
  • “Col-11”具有两位小数
有什么建议吗

我已使用以下“可渲染”函数生成表格:

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")],)

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

库(闪亮)
图书馆(DT)

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

然后,您可以使用renderTable()中的align=参数将它们作为数字向右对齐,该参数允许您为每列指定单独的对齐方式

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)