Вдохновленный этим solution Мне просто интересно, можно ли вернуться к кнопке «Все» после того, как вы снимете все имена колонок. Конечно, я могу просто развивать else if
функции:Develop Select/Deselect All Button for shiny
if(input$radio == "All"){
hw
}
else if (length(input$show_vars) == 0){
hw
}
else {
hw[,input$show_vars,drop=FALSE]
}
и результат подсчитывает все столбцы в наборе данных diamonds
но в панели Radiobuttons изменения ничего (т.е. «Manual Select» кнопка будет по-прежнему включена). Вместо этого я хотел бы автоматически изменить radioButton после снятия отметки со всех опций checkboxGroupInput.
ui.R
library(shiny)
shinyUI(fluidPage(
title = 'Examples of DataTables',
sidebarLayout(
sidebarPanel(
radioButtons(
inputId="radio",
label="Variable Selection Type:",
choices=list(
"All",
"Manual Select"
),
selected="All"),
conditionalPanel(
condition = "input.radio != 'All'",
checkboxGroupInput(
'show_vars',
'Columns in diamonds to show:',
choices=names(hw),
selected = "carat"
)
)
),
mainPanel(
verbatimTextOutput("summary"),
tabsetPanel(
id = 'dataset',
tabPanel('hw', dataTableOutput('mytable1'))
)
)
)
))
server.R (с моим дополнительным еще, если функция):
library(shiny)
library(ggplot2)
data(diamonds)
hw <- diamonds
shinyServer(function(input, output) {
Data <- reactive({
if(input$radio == "All"){
hw
}
else if (length(input$show_vars) == 0){
hw
}
else {
hw[,input$show_vars,drop=FALSE]
}
})
output$summary <- renderPrint({
## dataset <- hw[, input$show_vars, drop = FALSE]
dataset <- Data()
summary(dataset)
})
# a large table, reative to input$show_vars
output$mytable1 <- renderDataTable({
Data()
## hw[, input$show_vars, drop = FALSE]
})
})
Рад, что помог. Кстати, почему вы добавляете updateRadioButtons и updateCheckboxGroupInput в вектор с помощью c(). Я думаю, вы можете просто оставить часть c(), и они будут исполняться один за другим. Конечно, в этом случае избавиться от запятой посередине. –
ОК, я просто сделал это. Еще раз спасибо:)! – Nicolabo