# [R] approxfun-problems (yleft and yright ignored)

Martin Maechler maechler at stat.math.ethz.ch
Sat Sep 11 16:04:37 CEST 2010

```>>>>> "SW" == Samuel Wuest <wuests at tcd.ie>
>>>>>     on Thu, 26 Aug 2010 14:34:26 +0100 writes:

SW> Hi Greg,
SW> thanks for the suggestion:

SW> I have attached some small dataset that can be used to reproduce the
SW> odd behavior of the approxfun-function.

SW> If it gets stripped off my email, it can also be downloaded at:
SW> http://bioinf.gen.tcd.ie/approx.data.Rdata

SW> Strangely, the problem seems specific to the data structure in my
SW> expression set, when I use simulated data, everything worked fine.

SW> Here is some code that I run and resulted in the strange output that I
SW> have described in my initial post:

>> ### load the data: a list called approx.data
>> ### contains the slots "x", "y", "input"
>> names(approx.data)
SW> [1] "x"     "y"     "input"
>> ### with y ranging between 0 and 1
>> range(approx.data\$y)
SW> [1] 0 1
>> ### compare ranges of x and input-x values (the latter is a small subset of 500 data points):
>> range(approx.data\$x)
SW> [1] 3.098444 7.268812
>> range(approx.data\$input)
SW> [1]  3.329408 13.026700
>>
>>
>> ### generate the interpolation function (warning message benign)
>> interp <- approxfun(approx.data\$x, approx.data\$y, yleft=1, yright=0, rule=2)
SW> Warning message:
SW> In approxfun(approx.data\$x, approx.data\$y, yleft = 1, yright = 0,  :
SW> collapsing to unique 'x' values
>>
>> ### apply to input-values
>> y.out <- sapply(approx.data\$input, interp)
>>
>> ### still I find output values >1, even though yleft=1:
>> range(y.out)
SW> [1] 0.000000 7.207233

I get completely different (and correct) results,
by the way the *same* you have in the bug report you've
submitted
(https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=14377)
and which does *not* show any bug:

> range(y.out)
[1] 0.0000000 0.9816907

Of course, I do believe that you've seen the above problems,
-- on 64-bit Mac ? as you report in sessionInfo() ? --
but I cannot reproduce them.

And also, you seem yourself to be able to get different results
for the same data... what are the circumstances?

Regards,
Martin Maechler, ETH Zurich

```