我正在尝试numericInput()
在我闪亮的应用程序中设置默认(或后备)值以防止NAs
.
我知道NA
可以稍后在server.r中处理,但想知道是否有更优雅的方法来替换输入中的值,只要用户在 ui 中删除它。
我正在尝试numericInput()
在我闪亮的应用程序中设置默认(或后备)值以防止NAs
.
我知道NA
可以稍后在server.r中处理,但想知道是否有更优雅的方法来替换输入中的值,只要用户在 ui 中删除它。
最好的方法是使用这个validate
包need()
(见这个SO thread),但这里有一些更简单和更接近你要求的东西:
library(shiny)
ui <- fluidPage(
numericInput("obs", "Observations:", 10, min = 1, max = 100),
verbatimTextOutput("value")
)
server <- function(input, session, output) {
dafault_val <- 0
observe({
if (!is.numeric(input$obs)) {
updateNumericInput(session, "obs", value = dafault_val)
}
})
output$value <- renderText({ input$obs })
}
shinyApp(ui, server)
我建议使用库(shinyvalidate),这是RStudios解决此问题的“官方”方式:
library(shiny)
library(shinyvalidate)
ui <- fluidPage(
numericInput(
inputId = "myNumber",
label = "My number",
value = 0,
min = 0,
max = 10
),
textOutput("myText")
)
server <- function(input, output, session) {
iv <- InputValidator$new()
iv$add_rule("myNumber", sv_required(message = "Number must be provided"))
iv$add_rule("myNumber", sv_gte(0))
iv$add_rule("myNumber", sv_lte(10))
iv$enable()
output$myText <- renderText({
req(iv$is_valid())
input$myNumber
})
}
shinyApp(ui, server)