【发布时间】:2016-06-28 23:10:11
【问题描述】:
我正在 Shiny 上构建一个小部件,我希望有“全部”选项来选择所有可用数据,并且不执行过滤。
基本上,我想要以下代码(使用 dplyr):
filt<-sample(c("All", unique(mtcars$carb)),1)
data1<- mtcars %>%
ifelse (filt=="All", select(), filter(carb==filt))
它将根据 filt 的值过滤 mtcars。
如果 filt=="All" 那么它不会过滤并简单地返回 mtcars。
任何优雅的解决方案?
【问题讨论】:
-
if (filt == 'All') {data1 <- mtcars} else {data1 <- filter(mtcars, carb == filt)}怎么样? -
是的,我想过——但是如何将它嵌入到 Shiny 的反应函数中呢?我尝试了以下解决方案,但它不起作用:
if (filt == 'All') {data1 <- reactive({mtcars }) } else {data1 <-reactive({filter(mtcars, carb == filt) })} -
在响应式末尾添加
data。它将返回该数据框。
标签: r filter widget shiny dplyr