[R] interpolation to abscissa

jim holtman jholtman at gmail.com
Tue Jan 13 16:27:15 CET 2009


approxfun returns a function; that is not an error message:

> x=c(0,5,10,15,20)
> y=c(16,45,77,101,125)
>
> approx(x,y,method="linear")
$x
 [1]  0.0000000  0.4081633  0.8163265  1.2244898  1.6326531  2.0408163
 2.4489796  2.8571429  3.2653061
[10]  3.6734694  4.0816327  4.4897959  4.8979592  5.3061224  5.7142857
 6.1224490  6.5306122  6.9387755
[19]  7.3469388  7.7551020  8.1632653  8.5714286  8.9795918  9.3877551
 9.7959184 10.2040816 10.6122449
[28] 11.0204082 11.4285714 11.8367347 12.2448980 12.6530612 13.0612245
13.4693878 13.8775510 14.2857143
[37] 14.6938776 15.1020408 15.5102041 15.9183673 16.3265306 16.7346939
17.1428571 17.5510204 17.9591837
[46] 18.3673469 18.7755102 19.1836735 19.5918367 20.0000000

$y
 [1]  16.00000  18.36735  20.73469  23.10204  25.46939  27.83673
30.20408  32.57143  34.93878  37.30612
[11]  39.67347  42.04082  44.40816  46.95918  49.57143  52.18367
54.79592  57.40816  60.02041  62.63265
[21]  65.24490  67.85714  70.46939  73.08163  75.69388  77.97959
79.93878  81.89796  83.85714  85.81633
[31]  87.77551  89.73469  91.69388  93.65306  95.61224  97.57143
99.53061 101.48980 103.44898 105.40816
[41] 107.36735 109.32653 111.28571 113.24490 115.20408 117.16327
119.12245 121.08163 123.04082 125.00000

>
> z <- approxfun(x,y)
> z(0)
[1] 16
> z(12)
[1] 86.6
>


On Tue, Jan 13, 2009 at 9:22 AM, e-letter <inpost at gmail.com> wrote:
> On 08/01/2009, Greg Snow <Greg.Snow at imail.org> wrote:
>> If you want to just linearly interpolate, then use the functions approx or
>> approxfun from the stats package (one of those that is loaded by default).
> I have read the guide for approx and approxfun functions. Below is my data.
>
> x=c(0,5,10,15,20)
> y=c(16,45,77,101,125)
>
> approx(x,y,method="linear")
> $x
>  [1]  0.0000000  0.4081633  0.8163265  1.2244898  1.6326531  2.0408163
>  [7]  2.4489796  2.8571429  3.2653061  3.6734694  4.0816327  4.4897959
> [13]  4.8979592  5.3061224  5.7142857  6.1224490  6.5306122  6.9387755
> [19]  7.3469388  7.7551020  8.1632653  8.5714286  8.9795918  9.3877551
> [25]  9.7959184 10.2040816 10.6122449 11.0204082 11.4285714 11.8367347
> [31] 12.2448980 12.6530612 13.0612245 13.4693878 13.8775510 14.2857143
> [37] 14.6938776 15.1020408 15.5102041 15.9183673 16.3265306 16.7346939
> [43] 17.1428571 17.5510204 17.9591837 18.3673469 18.7755102 19.1836735
> [49] 19.5918367 20.0000000
>
> $y
>  [1]  16.00000  18.36735  20.73469  23.10204  25.46939  27.83673  30.20408
>  [8]  32.57143  34.93878  37.30612  39.67347  42.04082  44.40816  46.95918
> [15]  49.57143  52.18367  54.79592  57.40816  60.02041  62.63265  65.24490
> [22]  67.85714  70.46939  73.08163  75.69388  77.97959  79.93878  81.89796
> [29]  83.85714  85.81633  87.77551  89.73469  91.69388  93.65306  95.61224
> [36]  97.57143  99.53061 101.48980 103.44898 105.40816 107.36735 109.32653
> [43] 111.28571 113.24490 115.20408 117.16327 119.12245 121.08163 123.04082
> [50] 125.00000
>
> So my task is to find the value of x when y=0. I couldn't find
> guidance to use the xout function; any help with this please?
>
> approxfun(x,y,rule=2,method="linear")
> function (v)
> .C("R_approx", as.double(x), as.double(y), as.integer(n), xout = as.double(v),
>    as.integer(length(v)), as.integer(method), as.double(yleft),
>    as.double(yright), as.double(f), NAOK = TRUE, PACKAGE = "base")$xout
> <environment: 0x87e8830>
>
> Where do I go to find out the meaning of these errors and how to resolve?
>
> Yours,
>
> rhelp at conference.jabber.org
>
> r 251 (27-06-07)
> mandriva 2008
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem that you are trying to solve?




More information about the R-help mailing list