У меня работает следующее:
library(shiny)
liste_statut <- c("A","B","C")
ui <- shinyUI(fluidPage(uiOutput("testUI")))
server <- function(input, output, session) {
output$testUI <- renderUI({
navbarPage(
title = "Test",
tabPanel(icon = icon("users"), 'Test',
sidebarPanel(
# Statut
checkboxGroupInput("statut", "Statut", liste_statut, liste_statut),
checkboxInput('selectall_statut', 'Tout / Aucun', T))))
})
observeEvent(input$selectall_statut,{
val <- liste_statut
if(!input$selectall_statut)
val <- character(0)
updateCheckboxGroupInput(
session, 'statut',
selected = val
)
})
}
Сначала я попытался selected = ifelse(input$selectall_statut, liste_statut, character(0))
вместо промежуточной переменной val
.Однако ifelse()
вернул только одно значение, а не вектор.
Если вы собираетесь делать это много раз, то я бы порекомендовал пользовательскую функцию ifelse
.Возможно что-то вроде следующего:
ifelse2 <- function(test, yes, no){
if(test)
return(yes)
return(no)
}