我想檢查用戶在用戶界面中寫入的輸入是否為數字,以防回傳 SafeError。我寫了以下代碼,但它給了我錯誤,你能幫我嗎?
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
textInput("price","Price:", value = "", placeholder = "00.0"),
),
mainPanel(
h5(textOutput("price")),
)))
server <- function(input, output){
output$price <- renderText(
if(input$price == "" || is.numeric(input$pirce)==FALSE)
stop(safeError("input correct price field"))
else
return(c("Price:",input$price))
)
}
shinyApp(ui = ui, server = server)
uj5u.com熱心網友回復:
input$price在你做之前仍然是一個字符as.numeric(input$price)。如果模式匹配數字,您可以使用正則運算式搜索文本:
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
textInput("price", "Price:", value = "", placeholder = "00.0"),
),
mainPanel(
h5(textOutput("price")),
)
)
)
server <- function(input, output) {
output$price <- renderText(
if (!stringr::str_detect(input$price, "^[0-9] [.]?[0-9]*$")) {
stop(safeError("input correct price field"))
} else {
return(c("Price:", input$price))
}
)
}
shinyApp(ui = ui, server = server)
uj5u.com熱心網友回復:
您可以使用以下方法進行檢查as.numeric:
library(shiny)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
textInput("price","Price:", value = "", placeholder = "00.0"),
),
mainPanel(
h5(textOutput("price")),
)
)
)
server <- function(input, output, session){
output$price <- renderText({
check <- as.numeric(input$price)
if(is.na(check)){
stop(safeError("input correct price field"))
}else{
return(c("Price:",input$price))
}
})
}
shinyApp(ui = ui, server = server)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/447562.html
