0

我在一个闪亮的应用程序中有几个数字输入框供用户输入纬度/经度值。我想知道是否可以对其进行格式化,以便用户不必在经度框中输入小数或减号。

例如,在 Access(我正在将访问表单转换为闪亮的应用程序)中,输入框如下所示:在此处输入图像描述

我知道我可以在幕后使用正则表达式来完成,但我希望在用户眼前完成。目前,我只有一个标准numericInput('Latitude', Latitude, value = NA). 我autonumericInput()shinyWidgets图书馆找到了,这似乎很有希望,但我不知道如何争吵。

4

1 回答 1

0

我们可以使用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)
于 2022-01-24T23:07:36.017 回答