Я делаю групповое изменение, включающее интерполяцию, аналогично вопросам, поставленным в:
- Как мне использовать приблизительно () внутри mutate_at () с условным выражением в dplyr?
- линейная интерполяция с dplyr, но пропускаем группы со всеми пропущенными значениями
Я понимаю концепцию из двух приведенных выше вопросов, что если вы хотите интерполированное значениена xout
, тогда вам нужно как минимум две точки, окружающие xout
.Однако, как представляется, существует ограничение для случая, когда значение аргумента xout
равно значению аргумента x
, переданного в approx
, например:
approx(3, 4, 3)$y
# need at least two non-NA values to interpolate
В этом случаежелаемым выходом является входное значение y
, то есть 4
.Мне интересно, как лучше обойти это.Должен ли я вставить фиктивные значения x
, чтобы вызвать желаемое поведение, например:
> approx(c(runif(1), 3), c(runif(1), 4), 3, rule = 2)$y
[1] 4
или другой вариант - обернуть approx
другой функцией и использовать аргумент ties = 'ordered'
:
approx2 <- function(x, y, xout, ...) {
approx(c(x, x), c(y, y), xout, ties = "ordered")
}
> approx2(3, 4, 3, rule = 2)$y
[1] 4