library(shiny)
library(teal.widgets)
# all_choices example - semantically the same objects
choices_selected(choices = letters, selected = all_choices())
choices_selected(choices = letters, selected = letters)
choices_selected(
choices = setNames(LETTERS[1:5], paste("Letter", LETTERS[1:5])),
selected = "C"
)
ADSL <- teal.transform::rADSL
choices_selected(variable_choices(ADSL), "SEX")
# How to select nothing
# use an empty character
choices_selected(
choices = c("", "A", "B", "C"),
selected = ""
)
# How to allow the user to select nothing
# use an empty character
choices_selected(
choices = c("A", "", "B", "C"),
selected = "A"
)
# How to make Nothing the Xth choice
# just use keep_order
choices_selected(
choices = c("A", "", "B", "C"),
selected = "A",
keep_order = TRUE
)
# How to give labels to selections
# by adding names - choices will be replaced by "name" in UI, not in code
choices_selected(
choices = c("name for A" = "A", "Name for nothing" = "", "name for b" = "B", "name for C" = "C"),
selected = "A"
)
# by using choices_labeled
# labels will be shown behind the choice
choices_selected(
choices = choices_labeled(
c("A", "", "B", "C"),
c("name for A", "nothing", "name for B", "name for C")
),
selected = "A"
)
# Passing a `delayed_data` object to `selected`
choices_selected(
choices = variable_choices("ADSL"),
selected = variable_choices("ADSL", subset = c("STUDYID"))
)
# functional form (subsetting for factor variables only) of choices_selected
# with delayed data loading
choices_selected(variable_choices("ADSL", subset = function(data) {
idx <- vapply(data, is.factor, logical(1))
names(data)[idx]
}))
cs <- choices_selected(
choices = c("A", "B", "C"),
selected = "A"
)
ui <- fluidPage(
optionalSelectInput(
inputId = "id",
choices = cs$choices,
selected = cs$selected
)
)
server <- function(input, output, session) {}
if (interactive()) {
shinyApp(ui, server)
}
Run the code above in your browser using DataLab