从dplyr使用filter_时,RStudio Shiny崩溃

时间:2015-06-23 18:54:44

标签: r shiny dplyr

我在Shiny应用中使用dplyr的filter_功能过滤数据集。我用try()围绕评估,以便我能够发现错误。这在某些情况下可以正常工作,例如,使用空的过滤字符串。但是如果过滤字符串包含一个不在data.frame中的变量,则Shiny完全崩溃。

以下面的代码为例 - 如果过滤字符串只是"" Shiny返回错误(如预期的那样)。但如果你包括" z == 1"其中z不存在然后应用程序崩溃(不是预期!)。

library(shiny)
library(dplyr)
testapp <- shinyApp(
  ui = bootstrapPage(
    numericInput('n', 'Number of obs', 100),
    plotOutput('plot'),
    uiOutput("whyfail")
  ),

  server = function(input, output) {
    output$plot <- renderPlot({ hist(runif(input$n)) })


    output$whyfail<-renderUI({
      input$n
      dat<-data.frame(a=LETTERS[1:5], b=1:5)
      xx<-try(filter_(dat, ""), silent = TRUE)# returns an error as expected
      #xx<-try(filter_(dat, "z==1"), silent = TRUE) # crashes Shiny
      HTML(paste(attr(xx, "class"), collapse = '<br/>'))
    })



  }
)
runApp(testapp)

更新

我的dplyr版本是0.4.2,闪亮是0.12.1。两个更新:首先,如果我在基础R GUI(不是RStudio)中运行,我不会看到崩溃。此外,如果我没有加载dplyr所有代码运行正常,没有崩溃。我很惊讶代码运行,因为我希望filter_()依赖于dplyr而Shiny似乎不会导入dplyr或filter_())。

但我需要dplyr,我更愿意继续使用RStudio,所以任何帮助都会受到赞赏。

更新2

我在Windows 7 v 0.99.446中使用RStudio

更新3

不确定放这个的最佳位置。但这似乎是一个真正的错误,正在由RStudio解决,你可以在这个链接中看到https://github.com/rstudio/shiny/issues/879

1 个答案:

答案 0 :(得分:0)

原来这是包Rcpp的一个问题,而RStudio现在已经解决了它。您可以看到讨论和解决方案here