/ Nastavte filter ako ALL - r, dplyr

Nastavte filter ako ALL - r, dplyr

Používam používateľský formulár, ktorý ich vstupy robiafiltrovanie dvoch parametrov: dátový rámec a definícia filtra. Často potrebujem ignorovať tento filter, ale musím povinne prejsť na užívateľský formulár. Aké plnenia môžem priradiť, aby získal všetky riadky dátového rámca?

> require (dplyr)
> a <- data.frame(f1 = 1:10, f2 = 11:12)
> filter_by_f2 <- function (a, filterlist) {
+   filter(a,f2 %in% filterlist)
+ }
> filterlist <- 11
> filter_by_f2 (a, filterlist)
f1 f2
1  1 11
2  3 11
3  5 11
4  7 11
5  9 11
> # I would like set filter that get all the rows
> filterlist <- TRUE
> filter_by_f2 (a, filterlist)
[1] f1 f2
<0 rows> (or 0-length row.names)
> # need this result when I filtered
> a
f1 f2
1   1 11
2   2 12
3   3 11
4   4 12
5   5 11
6   6 12
7   7 11
8   8 12
9   9 11
10 10 12

odpovede:

3 pre odpoveď č. 1

Môžeš použiť TRUE ako filter:

my_filter <- TRUE
a <- data.frame(f1 = 1:10, f2 = 11:12)
a <- subset(a, my_filter)

Alternatívny prístup:

a <- data.frame(f1 = 1:10, f2 = 11:12)
filter_by_f2 <- function (a, filterlist) {
filter(a,f2 %in% filterlist)
}

filter_by_f2(a, a$f2)

1 pre odpoveď č. 2

Mohli ste použili konštrukciu "nie in" predpísaním logickej operácie "!".

filter(a, !(f2 %in% NULL) )
f1 f2
1   1 11
2   2 12
3   3 11
4   4 12
5   5 11
6   6 12
7   7 11
8   8 12
9   9 11
10 10 12