R Shiny - 使用selectInput过滤数据框,UseMethod中的错误:没有适用于' format_vec_csv'应用于类的对象"逻辑"

时间:2016-10-06 03:43:25

标签: r shiny ggvis

我正在构建一个带有条形图的仪表板,该条形图显示某一技能或一组技能的平均分数。数据需要通过selectInput菜单中选择的几个特征进行过滤,如本例所示(http://shiny.rstudio.com/gallery/movie-explorer.html)。

由于菜单选项与变量的级别略有不同,我使用此问题的答案作为指南(Filtering from selectInput in R shiny)。使用下面的代码,我在标题中收到错误:" UseMethod中的错误:没有适用于' format_vec_csv'应用于类的对象"逻辑"。"

这是一个类问题,似乎是我为此错误找到的一个Google结果(https://github.com/rstudio/ggvis/issues/303)。我不确定如何修复它。

最终,我还希望能够提供与数据级别不同的选项。找到了这个讨论(Setting shiny selectInput from data.frame)但是还没有能够实现它。

虚假数据:

library(dplyr)
SurvDoer <- c(rep("self", 4), rep("coach", 4), rep("mentor", 4))
Competency <- c(rep("vision", 6), rep("goals", 6))
Score <- rep(c(2,3,4,5), 3) 
fake<-data_frame(SurvDoer, Competency, Score)

代码:

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      uiOutput("choose_source")
    ),
    mainPanel(
      ggvisOutput("avg_bar")
    )
  )
)

server <- function(input, output, session) {
  #Data
  db <- reactive ({
    fake <- fake %>% 
      group_by(Competency) %>% 
      summarise_(avg = interp(~ mean(x, na.rm=TRUE), x=as.name("Score")))
    data.frame(fake)
  })

  #Render selectInput
  output$choose_source <- renderUI({
        sourceOpts <- as.vector(unique(db()$SurvDoer))
        selectInput("source", "Survey Respondent", choices=sourceOpts,                             multiple=TRUE)
  })

  dataset <- reactive({
    subset(db(), SurvDoer %in% input$source)
  })

  vis <- reactive({
  dataset %>%
    ggvis(~Competency, ~avg) %>%
    layer_bars()
  })

  vis %>% bind_shiny("avg_bar")
}

shinyApp(ui, server)

0 个答案:

没有答案