/ / ALL - r、dplyrとしてフィルターを設定する

フィルタをALL-r、dplyr

私はユーザーフォームを使用しています。データフレームとフィルタ定義の2つのパラメータのフィルタ関数。 多くの場合、そのフィルタを無視する必要がありますが、ユーザーフォームには必ず渡す必要があります。 データフレームのすべての行を取得するために割り当てることができる塗りつぶしは何ですか?

> 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

回答:

回答№1の場合は3

あなたは使うことができます TRUE フィルターとして:

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

代替アプローチ:

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)

回答№2の場合は1

論理演算に "!"を付けることで、 "not in"構成を使用できました。

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