Мы можем использовать Map
от base R
Map(function(x, y) x[x >= min(y) & x <= max(y)], df, Neighb)
#$A
#numeric(0)
#$B
#[1] 2 2 1 1 1 1 2
#$C
#[1] 16
#$D
#[1] 5 5 6 5
#$E
#[1] 1.09
#$F
#[1] 2 2 1 1 1 1 2
Если нам нужно filter
набор данных, основанный на логическом индексе, то есть строки, которые имеют все TRUE
на основе сравнения с 'Neighb'
df[Reduce(`&`, Map(function(x, y) x >= min(y) & x <= max(y), df, Neighb)), ]
и если это так, то ИСТИНА
df[Reduce(`|`, Map(function(x, y) x >= min(y) & x <= max(y), df, Neighb)),]
данные
df <- structure(list(A = c(24, 21, 12, 39, 51, 24, 48, 44, 14, 34),
B = c(6, 2, 2, 7, 1, 9, 1, 1, 1, 2),
C = c(16, 19, 12, 39, 82, 24, 32, 44, 18, 51),
D = c(5, 2, 79, 39, 27, 40, 5, 12, 6, 5),
E = c(1.2, 1.09, 0.86, 1.9, 2.3, 1.6, 1.6, 1.7, 0.88, 2.7),
F = c(6, 2, 2, 7, 1, 9, 1, 1, 1, 2)),
.Names = c("A","B", "C", "D", "E", "F"),
class = "data.frame",
row.names = c(NA, -10L))
Neighb <- list(c(15.7, 15.9, 16.0, 16.1, 16.2),
c(0, 1, 2, 3, 4),
c(15.0, 15.3, 16.0, 16.3, 16.5),
c(3, 4, 5, 6, 7),
c(1.08, 1.09, 1.10, 1.11, 1.12),
c(0, 1, 2, 3, 4))