R Shiny:在多层反应设置中访问动态selectInput的输入无效

时间:2015-10-05 23:41:48

标签: r neo4j shiny reactive-programming ggvis

问题简介:我正在构建一个闪亮的应用程序,我正在尝试支持数据库调用,这些调用驱动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") 
  1. 当我以这种方式过滤物品时,我没有错误。我的表过滤了输入$ A的变化而vis没有;我希望vis能够根据$ A的输入进行更改。
  2. 我最初尝试让MY_VIS依赖于NO_DB_REACTIVE。由于输入$ A从未生成,因此失败。我猜因为CURRENT_CHUNK永远不会运行,因为它没有。注意输出$ owner_choices是通过对CURRENT_CHUNK()而不是NO_DB_REACTIVE()做出反应而生成的。
  3. 关键问题:当我想过滤我的ggvis图时,如何设置它以便我的输入$ A值可用?

0 个答案:

没有答案