[R] applying uniroot function to each element in vector
Rolf Turner
rolf.turner at xtra.co.nz
Thu Apr 28 00:35:24 CEST 2011
On 28/04/11 06:12, David Winsemius wrote:
>
> On Apr 27, 2011, at 11:54 AM, Dale wrote:
>
>> If I have a vector of n elements, e.g. a vector of length 4 with
>> elements 10,
>> 20, 30, 40 and want to find the different values of x such that x^2=10,
>> x^2=20, x^30 and x^2=40, how could I do this in R? I'm thinking of
>> using the
>> uniroot function, but am finding difficult applying it to a vector.
>> Thanks
>
> I find myself scratching my head wondering why the answer is not:
>
> y=c(10,20,30,40)
> x=sqrt(y)
> x
My guess is that he really wants to solve foo(x) = y_i for each entry y_i of
some vector y, and that ``x^2'' was just an over-simplified version of foo()
(and c(10,20,30,40) was an over-simplified version of y).
I think that something like
lapply(y,function(a){uniroot(function(t){foo(t) - a},lower=L,upper=U)})
(untested) might be what is wanted (for appropriately chosen values of L
and U).
Things get more complicated if L and U need to be chosen differently for
each entry of y.
cheers,
Rolf Turner
More information about the R-help
mailing list