选择/取消选择全选按钮以选择闪亮的变量 [英] Select/Deselect All Button for shiny variable selection
本文介绍了选择/取消选择全选按钮以选择闪亮的变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这样一条语句,它允许我获得有关变量的基本描述性统计信息:
checkboxGroupInput('show_vars', 'Columns in diamonds to show:',
names(input_data), selected = names(input_data))
但是,在不得不取消单击10个变量以获得我感兴趣的一个变量之后,我意识到这个用户界面并不是很友好。我想添加一个按钮,当您单击它时可以选择/取消选择全部。它可以被点击多次。我甚至不知道如何开始。任何轻推都会有所帮助。
ui.R:
library(shiny)
hw<-diamonds
shinyUI(fluidPage(
title = 'Examples of DataTables',
sidebarLayout(
sidebarPanel(
checkboxGroupInput('show_vars', 'Columns in diamonds to show:',
names(hw), selected = names(hw))
),
mainPanel(
verbatimTextOutput("summary"),
tabsetPanel(
id = 'dataset',
tabPanel('hw', dataTableOutput('mytable1'))
)
)
)
))
服务器.R:
library(shiny)
data(diamonds)
hw<-diamonds
shinyServer(function(input, output) {
output$summary <- renderPrint({
dataset <- hw[, input$show_vars, drop = FALSE]
summary(dataset)
})
# a large table, reative to input$show_vars
output$mytable1 <- renderDataTable({
library(ggplot2)
hw[, input$show_vars, drop = FALSE]
})
})
推荐答案
这就是我设置全选/取消全选按钮的方式。
在ui.R中根据需要添加操作按钮:
actionButton("selectall", label="Select/Deselect all")
然后server.R根据操作按钮的条件使用updateCheckboxGroupInput。如果按下该按钮的次数为偶数,则将选择全部,否则,如果为奇数,则将选择无。
# select/deselect all using action button
observe({
if (input$selectall > 0) {
if (input$selectall %% 2 == 0){
updateCheckboxGroupInput(session=session,
inputId="show_vars",
choices = list("carat" = "carat",
"cut" = "cut",
"color" = "color",
"clarity"= "clarity",
"depth" = "depth",
"table" = "table",
"price" = "price",
"x" = "x",
"y" = "y",
"z" = "z"),
selected = c(names(hw)))
} else {
updateCheckboxGroupInput(session=session,
inputId="show_vars",
choices = list("carat" = "carat",
"cut" = "cut",
"color" = "color",
"clarity"= "clarity",
"depth" = "depth",
"table" = "table",
"price" = "price",
"x" = "x",
"y" = "y",
"z" = "z"),
selected = c())
}}
})
下面示例的完整应用程序-您需要向服务器函数添加会话,当没有选择变量时,我为renderDataTable添加了一个条件。
library(shiny)
library(ggplot2)
data(diamonds)
hw <- diamonds
runApp(
list(
ui=(
fluidPage(
title = 'Examples of DataTables',
sidebarLayout(
sidebarPanel(
actionButton("selectall", label="Select/Deselect all"),
checkboxGroupInput('show_vars', 'Columns in diamonds to show:',
names(hw), selected = names(hw))
),
mainPanel(
verbatimTextOutput("summary"),
tabsetPanel(
id = 'dataset',
tabPanel('hw', dataTableOutput('mytable1'))
))))),
server = (function(input, output, session) {
output$summary <- renderPrint({
dataset <- hw[, input$show_vars, drop = FALSE]
summary(dataset)
})
observe({
if (input$selectall > 0) {
if (input$selectall %% 2 == 0){
updateCheckboxGroupInput(session=session, inputId="show_vars",
choices = list("carat" = "carat",
"cut" = "cut",
"color" = "color",
"clarity"= "clarity",
"depth" = "depth",
"table" = "table",
"price" = "price",
"x" = "x",
"y" = "y",
"z" = "z"),
selected = c(names(hw)))
}
else {
updateCheckboxGroupInput(session=session, inputId="show_vars",
choices = list("carat" = "carat",
"cut" = "cut",
"color" = "color",
"clarity"= "clarity",
"depth" = "depth",
"table" = "table",
"price" = "price",
"x" = "x",
"y" = "y",
"z" = "z"),
selected = c())
}}
})
# a large table, reative to input$show_vars
output$mytable1 <- renderDataTable({
if (is.null(input$show_vars)){
data.frame("no variables selected" = c("no variables selected"))
} else{
hw[, input$show_vars, drop = FALSE]
}
})
})
))
这篇关于选择/取消选择全选按钮以选择闪亮的变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文