[英]R: dplyr “must be a 1d atomic vector or a list” error when using filter_()
[英]RStudio Shiny crashes when using filter_ from dplyr
我正在Shiny应用程序中使用dplyr的filter_
函数过滤数据集。 我用try()
包围评估,以便可以捕获错误。 在某些情况下,例如使用空过滤器字符串,这可以按预期工作。 但是,如果过滤器字符串包含不在data.frame中的变量,则Shiny会完全崩溃。
以以下代码为例-如果过滤器字符串只是“”,则Shiny返回错误(如预期)。 但是,如果在z不存在的情况下包含“ z == 1”,则应用程序将崩溃(不期望!)。
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,以便我们提供任何帮助。
我在Windows 7 v 0.99.446中使用RStudio
不确定放置此内容的最佳位置。 但这似乎是一个真正的错误,RStudio正在解决该错误,您可以在此链接中看到https://github.com/rstudio/shiny/issues/879
原来这是Rcpp软件包的问题,RStudio现在已经解决了。 您可以在此处查看讨论和解决方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.