Я не думаю, что для этого есть готовая функция, но вы можете легко создать ее. Например:
Функция для получения «соседей» (имя немного вводит в заблуждение, но функция работает):
get.neighbourgs <- function(vector, x) {
diff <- vector-x
if (any(diff==0)) {
return(which(diff==0))
} else {
lower <- tail(which(diff<0), 1)
return((lower-1):lower)
}
}
Он вернет точный идентификатор, если a значение найдено в vector
, иначе он вернет два «идентификатора» (до этого два меньших значения). Это требует, чтобы ваши данные были заказаны! Если нет, вам нужно немного подкорректировать его. Примеры использования:
> get.neighbourgs(lkp$x,1.3)
[1] 5
> get.neighbourgs(lkp$x,2)
[1] 5 6
Используя эту функцию, можно построить простую функцию, чтобы получить среднее значение требуемых значений y
, например:
get.y <- function(df, x) {
mean(df$y[get.neighbourgs(df$x, x)])
}
Примеры:
> get.y(lkp, 1.2)
[1] 0.971
> get.y(lkp, 2)
[1] 0.931
Надеюсь, что это поможет.