我有一个带有过滤条件的闪亮应用程序,如果case1为真,我想保留特定verctor的所有值,如果不是,我做一个输入有光泽的过滤器。 我已经用基本的R做了它并且它可以工作但现在需要使用dplyr来优化我的应用程序。 谢谢
filter(
ifelse(input$case1 == TRUE,
perimetre_commercial_estime %in% perimetres,
perimetre_commercial_estime %in% input$perimetre
)
)
编辑1:
基数R中的等价物是:
ifelse(input$case1 == TRUE,
my.data <- my.data[my.data$perimetre_commercial_estime %in% perimetres, ],
my.data <- my.data[my.data$perimetre_commercial_estime %in% input$perimetre, ]
)
编辑2:
在杰夫回答之后,我只是通过if(条件)else重新发布了ifelse语句,并且它运作得很好......有什么建议吗?
filter(if(input$case1 == TRUE){perimetre_commercial_estime %in% perimetres}
else {perimetre_commercial_estime %in% input$perimetre}
答案 0 :(得分:1)
你的嘘声提供了一个可重复的例子。据我所知,这个简单的例子可能对你有帮助。
library(dplyr)
x <- data.frame(a = sample(c("a","b"),10,replace=T),b = rnorm(10))
> x
a b
1 b -0.3862283
2 a 0.7916584
3 a -0.8751162
4 a -0.8164377
5 b -0.2174477
6 a -0.1998766
7 a 0.3356798
8 a 0.1569653
9 b 0.8326479
10 b -0.7936936
x %>% filter(a == "a")
a b
1 a 0.7916584
2 a -0.8751162
3 a -0.8164377
4 a -0.1998766
5 a 0.3356798
6 a 0.1569653
答案 1 :(得分:1)
Bonjour MTB,
听起来你应该先将条件置于过滤器中。所以:
if (condition)
var <- filter(perimetre_commercial_estime %in% perimetres)
else
var <- filter(perimetre_commercial_estime %in% input$perimetre)
你的帖子暗示ifesle应该在filter()函数之外; dplyr允许组合/排除逻辑参数,如&amp;&amp;和||但在同一背景下。
希望我理解这个问题,我在这里寻找一些意想不到的闪亮/ dplyr行为......