当用户没有对输入进行选择时(即,当input$vals
的长度等于零时(,我希望出现shinyalert
警告。但是,下面的代码不起作用。有人能告诉我我做错了什么吗?
---
runtime: shiny
output:
html_document
---
```{r echo = F, message = F, warning = F, error = F}
library(shiny)
library(shinyalert)
library(tidyverse)
selectInput("vals", "Select", choices = c("a", "b"),
multiple = T, selected = "a")
observeEvent(input$vals, {
if(input$vals %>% length == 0) {
shinyalert("Select At Least One")
}
})
```
您可以使用is.null 检查输入的长度
library(shiny)
library(shinyalert)
library(tidyverse)
ui <- fluidPage(
useShinyalert(),
selectInput("vals", "Select", choices = c("a", "b"),
multiple = T, selected = "a")
)
server <- function(input, output) {
observe({
if(is.null(input$vals)){
shinyalert('Select At Least One')}
})
}
shinyApp(ui, server)
要在输入为NULL时触发observeEvent()
,可以将其ignoreNULL
参数设置为FALSE
(默认TRUE
(
然后最好将其ignoreInit
参数设置为TRUE
(默认FALSE
(,以防止在";a";元素。
---
output: html_document
runtime: shiny
---
```{r echo = F, message = F, warning = F, error = F}
library(shiny)
library(shinyalert)
library(tidyverse)
selectInput("vals", "Select", choices = c("a", "b"),
multiple = T, selected = "a")
observeEvent(input$vals, ignoreNULL = FALSE, ignoreInit = TRUE, {
if(input$vals %>% length == 0) {
shinyalert("Select At Least One")
}
})
```