其中是否有一个值会使dplyr过滤器不过滤任何内容?我正在使用变量基于Shiny中的下拉菜单进行过滤。
我知道if语句之类的答案this。但是,我很好奇是否有一种方法可以通过将过滤器值设置为等于“不过滤任何东西”的值来实现。
这是我正在尝试的可复制示例。
library(dplyr)
my_df <- structure(
list(
`Month Nm` = c("October", "August", "August",
"March", "January", "July"),
Cycle = c(
">= 2nd Cycle Action",
">= 2nd Cycle Action",
">= 2nd Cycle Action",
">= 2nd Cycle Action",
"ACK or RTA",
">= 2nd Cycle Action"
)
),
row.names = c(NA,-6L),
class = c("tbl_df",
"tbl", "data.frame")
)
filter_var <- October"
my_df %>% filter(`Month Nm` == filter_var) %>% View()
# How can I set the variable (filter_var) that will make the filter not filter anything?
filter_var <- "" # What can I set this to?
my_df %>% filter(`Month Nm` == filter_var) %>% View() # I want the output to be everything
我尝试将值设置为NULL,TRUE和FALSE只是为了好玩,但没有运气。
我想做到这一点的一种方法是在感兴趣的列中找到所有不同的值,然后基于所有方法进行过滤?还有更简洁的方法吗?
答案 0 :(得分:1)
您可以简单地创建一个虚拟测试值并将其用于您的过滤条件,如下所示-
dummy <- "all"
filter_var <- "all"
my_df %>%
filter(`Month Nm` == filter_var | filter_var == dummy)
# A tibble: 6 x 2
`Month Nm` Cycle
<chr> <chr>
1 October >= 2nd Cycle Action
2 August >= 2nd Cycle Action
3 August >= 2nd Cycle Action
4 March >= 2nd Cycle Action
5 January ACK or RTA
6 July >= 2nd Cycle Action
filter_var <- "August"
my_df %>%
filter(`Month Nm` == filter_var | filter_var == dummy)
# A tibble: 2 x 2
`Month Nm` Cycle
<chr> <chr>
1 August >= 2nd Cycle Action
2 August >= 2nd Cycle Action
dummy
应该是您的实际过滤器变量中不存在的值。
答案 1 :(得分:1)
如果可以(在这种情况下可以帮助您),我建议不要将数据框更改为包括实现细节。
您可以在template<int = 0>
void Foo(int*);
void Foo(std::nullptr_t);
语句中直接使用or语句。只需在下拉菜单中添加一个名为filter
的选项,然后更改您的"All Months"
语句:
filter