在闪亮的输入中设置默认值(以防用户在 UI 中删除它)
Set a default value in shiny inputs (in case the user deletes it in the UI)
我正在尝试在我闪亮的应用程序中为 numericInput()
设置默认(或回退)值以防止 NAs
。
我知道 NA
可以稍后在 server.r 中处理,但想知道是否有更优雅的替换方法每当用户在 ui.
中删除它时输入中的值
最好的方法是将 validate
包与 need()
一起使用(请参阅此 ),但这里有一些更简单且更接近您要求的方法:
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), which is RStudios "official" way 来解决这个问题:
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)
我正在尝试在我闪亮的应用程序中为 numericInput()
设置默认(或回退)值以防止 NAs
。
我知道 NA
可以稍后在 server.r 中处理,但想知道是否有更优雅的替换方法每当用户在 ui.
最好的方法是将 validate
包与 need()
一起使用(请参阅此
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), which is RStudios "official" way 来解决这个问题:
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)