闪亮应用程序selectInput和radioButtons中的反应性更新 - ggvis

时间:2016-01-05 18:48:23

标签: r shiny ggvis

我尝试在我的简单闪亮的应用程序中实现一个功能。我的目标是创建响应小部件,它将依赖于不同的小部件。在我的示例中,我有两个重要的小部件:ele.css('position', 'relative'); $('#handle').draggable({ opacity: 0.01, helper: 'clone', drag: function(event, ui) { console.log(ui); var rotateCSS = 'rotate(' + ui.position.left + 'deg)'; $(this).parent().css({ '-moz-transform': rotateCSS, '-webkit-transform': rotateCSS }); } }); radioButtons。根据我在selectInput中的选择,小部件radioButtons的输出将会发生变化。

不幸的是我收到了错误:selectInput。谢谢你的帮助。

ui.R

Error in as.name(input$xvar) :invalid type/length (symbol/0)

server.R

library(shiny)

shinyUI(
        fluidPage(
                fluidRow(
                        column(3,
                               selectInput('prod','', prod),
                               radioButtons('level','',level, level[1]),
                               uiOutput('in_xvar')
                        ),
                        column(9,
                               ggvisOutput('ggvis_plot')
                        )
                )
        ))

global.R

library(shiny)
library(ggvis)
library(dplyr)


shinyServer(function(input, output) {

        data0 <- reactive({
                df <- test_data
                df <- df %>% 
                        filter(prod == input$prod)
        })

        data <- reactive({
                df <- data0()
                df <- df %>% 
                        filter(level == input$level)
        })

        output$in_xvar <- renderUI({
                choosen_list <- axis_x[input$level]
                selectInput('xvar','', choosen_list)
        })

        ggvis_plot <- reactive({

                x <- prop('x', as.name(input$xvar))

                plot <- data() %>% 
                        ggvis(x, ~value) %>% 
                        layer_points(fill = ~part)
        })

        ggvis_plot %>% bind_shiny('ggvis_plot')
})

1 个答案:

答案 0 :(得分:2)

您收到错误是因为input$xvar最初为NULL,请尝试在ggvis_plot中添加if / else:

ggvis_plot <- reactive({
                if(is.null(input$xvar))
                        x <- prop('x', as.name("id"))
                else 
                        x <- prop('x', as.name(input$xvar))
                plot <- data() %>% 
                        ggvis(x, ~value) %>% 
                        layer_points(fill = ~part)
        })