我有一个包含众多numericInput领域的 Shiny 应用程序。我想要一种numericInput用逗号分隔每 10^3来格式化字段的方法。例如,我想要 5,000,000 而不是 5000,000。
我可以在 R 中使用format和prettyNum函数来做到这一点。但我没有办法在 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)
这特别好,因为它提供了按您键入的格式,以便用户可以轻松地知道他们输入的数字有多大。根据我的经验,我知道尝试将大量数字放入其中确实很痛苦。基本闪亮的数字输入,尝试计算一个小盒子中的数字并找出有多少个零。此函数的目标是使数字输入的格式化更加容易。
希望这有用!