У меня есть большой кусок, который мне нужно отфильтровать.В частности, мне нужно отфильтровать различные комбинации нескольких условий (но все из одних и тех же столбцов).
Мои условия фильтрации - это что-то вроде
filter(str_detect(id, "^M.+(KIT|FLEECE)"), between(f1, 300, 400), between(f2, 1300, 1400))
filter(str_detect(id, "^M.+(GOOSE)"), between(f1, 200, 350), between(f2, 1200, 1400))
Что, конечно, работает, это что-то вроде
filtered1<- df %>%
filter(str_detect(id, "^M.+(KIT|FLEECE)"), between(f1, 300, 400), between(f2, 1300, 1400))
filtered2<- df %>%
filter(str_detect(id, "^M.+(GOOSE)"), between(f1, 200, 350), between(f2, 1200, 1400))
filtered<-bind_rows(filtered1, filtered2)
Мне интересно, как бы я сочетал их с каким-то оператором ИЛИ, например
filtered<- df %>%
filter(str_detect(id, "^M.+(KIT|FLEECE)"), between(f1, 300, 400), between(f2, 1300, 1400)) OR
filter(str_detect(id, "^M.+(GOOSE)"), between(f1, 200, 350), between(f2, 1200, 1400))
Вот MWE некоторых примеров данных
id<-rep(c("M1_1_KIT_1", "M3_2_FLEECE_2", "M2_4_GOOSE_3", "M6_4_KIT_5"), 3)
f1<-sample(200:500, 12)
f2<-sample(1200:1500, 12)
df<-data.frame(id, f1, f2)
df
id f1 f2
1 M1_KIT 268 1238
2 M3_FLEECE 270 1459
3 M2_GOOSE 409 1471
4 M4_KIT 344 1337
5 M1_KIT 400 1419
6 M3_FLEECE 210 1379
7 M2_GOOSE 321 1356
8 M4_KIT 478 1284
9 M1_KIT 391 1439
10 M3_FLEECE 382 1317
11 M2_GOOSE 468 1273
12 M4_KIT 306 1270
Я быбыть еще более счастливым для более общего решения, например, когда я помещаю значения фильтра в отдельный тиббл и перебираю строки, но это вне моего знания R.