To me that sounds confusing for the user , personally I think I'd get frustrated if I want to deselect something and can't.
Would an error message do?
table_iris <- reactive({
print(input$ID)
validate(need ( !(is.null(input$ID)),
"Please select at least one species")
)
iris <- iris %>% filter(Species %in% input$ID)
return(iris)
})
If not maybe you can use the updateCheckboxGroupInput() function and check a specific box automatically?
something like
observe({
if( is.null(input$ID) ){
updateCheckboxGroupInput(session, "ID", selected =as.character(unique(iris$Species)))
}
})