私はユーザーフォームを使用しています。データフレームとフィルタ定義の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