Подход комбинированного разделения, где мы используем Map
для итерации по подмножествам и условиям параллельно.
do.call(rbind,
Map(function(data, left, right) {
subset(x = data, subset = y > left | y < right)
},
data = split(df, df$x),
left = c(30, 21, 42, 58),
right = c(20, 12, 21, 13)
))
# x y
#A.5 A 63.349326
#A.10 A 59.876097
#A.11 A 97.617069
#A.12 A 73.179251
#A.22 A 49.559358
#A.24 A 17.344233
# ...
Мы разбиваем ваши данные на x
, подгруппируем каждый в соответствии с вашими условиями и объединяем список в один фрейм данных.