问题简介:我正在构建一个闪亮的应用程序,我正在尝试支持数据库调用,这些调用驱动selectInputs的动态选择列表以及动态输入驱动ggvis图表显示的位置。未正确选择动态selectInput并过滤ggvis图
问题:我如何支持动态下拉列表,同时仍然根据所选项目确保我的ggvis绘图过滤器?
问题详情:
在我的Server.R文件中,我有一个从数据库中获取数据的反应。 get_chunk函数是对NEO4J的调用,我知道它可以工作:
shinyServer( function(input, output, session) {
CURRENT_CHUNK <- reactive({
#call NEO4J
chunk <- get_chunk(some_list = input$chunk)
return(chunk)
})
我还有一个被动反应,只根据前端的ui选项过滤掉数据。输入$ A值是动态构建的下拉列表中的选定值。 filter_reactive如下。注意:我把这两个分开了,所以我不必一直打电话给数据库;只有当我选择不同的CHUNK时。反应过滤器如下所示:
NO_DB_REACTIVE <- reactive({
#react to current_chunk and pull back a chunk.
filter_down <- CURRENT_CHUNK()
#check for nulls
if (!is.null(chunk)) {
if (input$A != "All") {filter_down <- filter_down %>% filter(A == input$A)}
return(filter_down)
}
return(filter_down)
})
输入$ A值在server.R文件中动态生成如下:
# reactively /dynamically generated the choices for the channel owners
output$owner_choices <- renderUI({ selectInput("A", "FOR Owner"
, as.list(c("All",unique(CURRENT_CHUNK()[,'owner'] )))
, "All") })
我也有反应生成我的GGVIS图,如下所示:
#All of the visualizations
MY_VIS <- reactive({
# Lables for axes
yvar_name <- names(display_choices)[display_choices == input$yvar]
xvar_name <- names(cat_choices)[cat_choices == input$xvar]
#retrieving
yvar <- prop("y", as.symbol(input$yvar))
xvar <- prop("x", as.symbol(input$xvar))
CURRENT_CHUNK %>%
ggvis(x = xvar, y = yvar) %>%
layer_bars() %>%
add_axis("x", title = xvar_name, properties = axis_props(labels = list(angle = 45, align = "left", fontSize = 10))) %>%
add_axis("y", title = yvar_name) %>%
set_options(width = 900, height = 300)
})
我试图尽可能减少这种情况。有一些动态选择轴,但你明白了。注意我目前在MY_VIS被动中调用CURRENT CHUNK。文件的末尾有以下内容:
output$table <- renderDataTable({ NO_DB_REACTIVE() })
MY_VIS %>% bind_shiny("my_vis")
关键问题:当我想过滤我的ggvis图时,如何设置它以便我的输入$ A值可用?