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ď č. 1Môž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