Я не думаю, что есть готовая функция для этого, но вы можете создать ее довольно легко. E.g.:
Функция для получения "соседей" (название немного вводит в заблуждение, но функция работает):
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)
}
}
Он вернет точный «идентификатор», если значение будет найдено в 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
Надеюсь, это поможет.