Переменная фильтра dplyr установлена, чтобы ничего не фильтровать [r] - PullRequest
0 голосов
/ 31 октября 2018

Есть ли значение, которое заставит фильтр dplyr ничего не фильтровать? Я использую переменную для фильтрации на основе выпадающего меню в Shiny.

Я знаю, что есть ответы с такими утверждениями, как 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 просто для удовольствия, но не повезло.

Полагаю, один из способов сделать это - найти все различные значения в интересующем столбце и отфильтровать все это? Есть ли более лаконичный метод?

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Я бы посоветовал не изменять ваш фрейм данных, чтобы включить детали реализации, если вы можете помочь ему (и вы можете помочь в этом случае).

Вы можете использовать оператор или непосредственно в операторе filter. Просто добавьте параметр в раскрывающееся меню с именем "All Months", а затем измените выражение filter:

my_df %>% filter(`Month Nm` == filter_var | filter_var == "All Months") %>% View()`
0 голосов
/ 31 октября 2018

Вы можете просто создать фиктивное тестовое значение и использовать его в своем состоянии фильтра, как показано ниже -

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 должно быть значением, которое еще не существует в вашей фактической переменной фильтра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...