R Shiny 数字输入自动格式化为十进制,可能使用 shinyWidgets::autonumericinput()
R Shiny numeric input automatically format as decimal, possibly using shinyWidgets::autonumericinput()
我在一个闪亮的应用程序中有几个数字输入框供用户输入 lat/long 值。我想知道是否可以对其进行格式化,以便用户不必在经度框中输入小数点或减号。
例如,在 Access 中(我正在将访问表单转换为闪亮的应用程序),输入框如下所示:
我知道我可以使用正则表达式在幕后完成,但我希望在用户眼前完成。目前,我只有一个标准 numericInput('Latitude', Latitude, value = NA)
。我在 shinyWidgets
库中找到了 autonumericInput()
,这看起来很有希望,但我不确定如何处理它。
我们可以将 updateNumericInput
与某些 stringr
函数一起使用。例如设置两位数后的小数位:
library(shiny)
library(stringr)
ui <- fluidPage(
numericInput("lat", "Insert Latitude", "")
)
server <- function(input, output, session) {
observeEvent(input$lat, {
if (!is.na(input$lat)) {
if (str_length(input$lat) > 2 & !str_detect(input$lat, "\.")) {
x <- input$lat
str_sub(x, 3) <- str_c(".", str_sub(x, 3))
updateNumericInput(session, inputId = "lat", value = as.numeric(x))
}
}
})
}
shinyApp(ui, server)
我在一个闪亮的应用程序中有几个数字输入框供用户输入 lat/long 值。我想知道是否可以对其进行格式化,以便用户不必在经度框中输入小数点或减号。
例如,在 Access 中(我正在将访问表单转换为闪亮的应用程序),输入框如下所示:
我知道我可以使用正则表达式在幕后完成,但我希望在用户眼前完成。目前,我只有一个标准 numericInput('Latitude', Latitude, value = NA)
。我在 shinyWidgets
库中找到了 autonumericInput()
,这看起来很有希望,但我不确定如何处理它。
我们可以将 updateNumericInput
与某些 stringr
函数一起使用。例如设置两位数后的小数位:
library(shiny)
library(stringr)
ui <- fluidPage(
numericInput("lat", "Insert Latitude", "")
)
server <- function(input, output, session) {
observeEvent(input$lat, {
if (!is.na(input$lat)) {
if (str_length(input$lat) > 2 & !str_detect(input$lat, "\.")) {
x <- input$lat
str_sub(x, 3) <- str_c(".", str_sub(x, 3))
updateNumericInput(session, inputId = "lat", value = as.numeric(x))
}
}
})
}
shinyApp(ui, server)