Это не означает, что это прямой ответ на вопрос ОП, а скорее для иллюстрации того, как работает approx()
, чтобы ОП мог сформулировать лучший Q
Ваш Q делает рядом сне имеет смысла.approx()
работает, беря эталонный набор координат x и y, а затем интерполируя, чтобы найти y
в n
местоположениях в диапазоне x
или в указанных xout
местоположенияхпредоставлено пользователем.
Таким образом, при вызове вы не предоставляете y
, а x
не содержит компонент y
, поэтому я не понимаю, как это может работать.
Если вы хотите интерполировать s
, чтобы вы могли найти временные интервалы для любого значения в диапазоне s
, тогда:
> approx(s, seq_along(s), n = 20)
$x
[1] 0.00000000 0.05263158 0.10526316 0.15789474 0.21052632 0.26315789
[7] 0.31578947 0.36842105 0.42105263 0.47368421 0.52631579 0.57894737
[13] 0.63157895 0.68421053 0.73684211 0.78947368 0.84210526 0.89473684
[19] 0.94736842 1.00000000
$y
[1] 1.00000 26.25815 42.66323 54.79831 64.96162 76.99433 79.67388
[8] 83.78458 86.14656 89.86223 91.98513 93.36233 93.77353 94.19731
[15] 94.63652 95.26239 97.67724 98.74056 99.40548 100.00000
Здесь $y
содержит интерполированные значения для s
в n = 20
равномерно расположенных местах в диапазоне s
(0,1).
Редактировать : если x
представляет серию в неустановлено интервалы времени равномерны по 0,1, и вы хотите интерполированные значения x
на интервалах времени s
, тогда вам нужно что-то вроде этого:
> set.seed(1)
> x <- rnorm(20)
> s <- sort(rexp(10))
> scale01 <- function(x) {
+ (x - min(x)) / (max(x) - min(x))
+ }
> s <- scale01(s)
>
> ## interpolate x at points s
> approx(seq(0, 1, length = length(x)), x, xout = s)
$x
[1] 0.00000000 0.04439851 0.11870795 0.14379236 0.20767388 0.21218632
[7] 0.25498856 0.29079300 0.40426335 1.00000000
$y
[1] -0.62645381 0.05692127 -0.21465011 0.94393053 0.39810806 0.29323742
[7] -0.64197207 -0.13373472 0.62763207 0.59390132
Это ближе к тому, что вы хотите?