如何格式化 R Shiny numericInput?

ich*_*len 7 formatting shiny

我有一个包含众多numericInput领域的 Shiny 应用程序。我想要一种numericInput用逗号分隔每 10^3来格式化字段的方法。例如,我想要 5,000,000 而不是 5000,000。

我可以在 R 中使用formatprettyNum函数来做到这一点。但我没有办法在 Shiny 中做到这一点。

这对 UI 非常有帮助,因为它可以处理百分比、金钱等。有谁知道如何将其纳入该numericInput领域?

谢谢!

library(shiny)

# Define UI for application that draws a histogram
ui <- fluidPage(
  mainPanel(
    numericInput("formatNumber",
                 "Number should be formatted, e.g."5,000,000",
                 value = 1000),
    p(format(5000000.10, big.mark=",", big.interval=3L,
             digits=0, scientific=F))
  )
)

server <- function(input, output) {  
}

shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)

小智 13

shinyWidgets包有一个很棒的新功能(从版本 0.5.4 开始添加,也是一个免责声明,我通过拉取请求添加了它),autonumericInput 将允许您执行此操作。它基于 javascript 库 autonumeric。该函数有很多选项,但文档很丰富,对于简单的使用,大多数可以忽略。

您尝试做的事情可以按如下方式完成:

library(shiny)
library(shinyWidgets)

ui <- fluidPage(
  h1("Autonumeric Input Example"),
  shinyWidgets::autonumericInput(
    inputId = "num", 
    label = "Enter a large number:", 
    value = 1000000, 
    currencySymbolPlacement = "p",
    decimalPlaces = 2,
    digitGroupSeparator = ",",
    decimalCharacter = "."
  ),
  verbatimTextOutput("res1")
)

server <- function(input, output) {
  output$res1 <- renderText(input$num)
}

shinyApp(ui = ui, server = server)

Run Code Online (Sandbox Code Playgroud)

这特别好,因为它提供了按您键入的格式,以便用户可以轻松地知道他们输入的数字有多大。根据我的经验,我知道尝试将大量数字放入其中确实很痛苦。基本闪亮的数字输入,尝试计算一个小盒子中的数字并找出有多少个零。此函数的目标是使数字输入的格式化更加容易。

希望这有用!