我正在尝试使用ggvis条形图来过滤闪亮的值(就好像它是一个复选框输入)。我可以通过点击图表中的任何一个条来选择我想要的复选框,但是我无法通过再次点击同一个栏来取消选择它们。
我尝试编写if
语句(已注释)但复选框保持闪烁,因为barValue()
进入并且无限循环。我怀疑这个问题是由tblCar()
的反应性引起的,但我不确定如何进一步移动...也许我应该将tblCar
放在观察中?
ui.R
library(shiny)
a <- row.names(mtcars)
names(a) <- row.names(mtcars)
as.list(a)
shinyUI(fluidPage(
# Application title
titlePanel("Old Faithful Geyser Data"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
checkboxGroupInput("carModel", label = h3("Checkbox group"),
choices = as.list(a),
selected = 1)
),
# Show a plot of the generated distribution
mainPanel(
ggvisOutput('countBar'),
tableOutput('tblCar')
)
)
))
取消选择的if
语句已被注释掉。
server.R
library(shiny)
shinyServer(function(input, output) {
barValue <- function(data, location, session, ...) {
data$stack_lwr_ <- NULL
# if (data$x_ %in% input$carModel) {
# return( updateCheckboxGroupInput(session,'carModel',selected = input$carModel[! input$carModel %in% data$x_ ]) )
# } else {
print(paste(data$x_))
updateCheckboxGroupInput(session,'carModel',selected = c(data$x_,input$carModel))
#}
}
output$value <- renderPrint({ input$checkGroup })
#barchart-menu
tbl_df(mtcars) %>% mutate(cars=row.names(mtcars)) %>%
ggvis(~cars, ~mpg) %>% layer_bars() %>%
handle_click(barValue) %>%
bind_shiny('countBar', 'ui_countBar')
tblCar <- reactive({
req(input$carModel)
tbl_df(mtcars) %>% mutate(cars=row.names(mtcars)) %>%
filter(cars %in% input$carModel)
})
output$tblCar <- renderTable({
tblCar()
})
})
global.R
library(ggvis)
library(dplyr)