我有一个 Shiny 的应用程序,里面有很多 numericInput
领域。我想要一种格式化 numericInput
的方法每 10^3 个逗号分隔的字段。例如,我想要 5,000,000 而不是 5000,000。
我可以在 R 中使用 format
来做到这一点和 prettyNum
职能。但我没有办法在 Shiny 中做到这一点。
这对 UI 非常有帮助,因为它可以处理百分比、金钱等。有没有人知道如何将其合并到 numericInput
中。 field ?
谢谢!
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)
最佳答案
shinyWidgets
package 有一个很棒的新功能(从 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)
这特别好,因为它提供了你输入的格式,所以用户可以很容易地知道他们输入的数字有多大。我从经验中知道,尝试将大数字放入基础 Shiny 的 numericInput,试图计算一个小盒子中的数字并找出有多少个零。此函数的目标是使格式化数字输入更加容易。希望这是有用的!
关于shiny - 如何格式化 R Shiny numericInput?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51791983/