[R] problem with a function

Sarah Goslee sarah.goslee at gmail.com
Fri May 28 16:06:12 CEST 2010


Hi Hannah,

No, we can't help because we have no idea what rho.f does - you didn't
provide the requested reproducible example. Without more information,
the only thing I can think of is that your function might be ridiculously
sensive to numeric precision (though that seems unlikely):

> corr <- seq(0,0.9, by=0.1)
> identical(0.3, corr[4])
[1] FALSE
> all.equal(0.3, corr[4])
[1] TRUE

apply() is likely to be more elegant in this case than a for loop.

Sarah

On Fri, May 28, 2010 at 9:52 AM, li li <hannah.hlx at gmail.com> wrote:
> Hi all,
>   I have a function rho.f which gives a list of estimators. I have the
> following problems.
> rho.f(0.3) gives me the right answer. However, if I use rho.f(corr[4]) give
> me a different
> answer, even though corr[4]==0.3.
>   This prevents me from using a for loop. Can someone give me some help?
>    Thank you very much in advance.
>                                                   Hannah
>
>> rho.f(0.3)
> $est.1
> [1] 0 0 0 0 0 0
> $est.2
> [1] 0 0 0 0 0 0
> $est.3
> [1] 0 0 0 0 0 0
> $est.4
> [1] 0 0 0 0 0 0
> $est.5
> [1] 0 0 0 0 0 0
>
>> corr <- seq(0,0.9, by=0.1)
>> corr[4]
> [1] 0.3
>
>> rho.f(corr[4])
> $est.1
> [1] 0.0 0.0 2.5 0.0 5.0 0.0
> $est.2
> [1] 0.00000 0.00000 0.00000 0.00000 3.72678 0.00000
> $est.3
> [1] 0.000000 0.000000 0.000000 0.000000 2.777778 0.000000
> $est.4
> [1]  0.00000  0.00000  0.00000  0.00000 13.88889  0.00000
> $est.5
> [1]  0.00000  0.00000  0.00000  0.00000 13.88889  0.00000
>>
>

-- 
Sarah Goslee
http://www.functionaldiversity.org



More information about the R-help mailing list