Re: [R] applying uniroot function to each element in vector

From: Rolf Turner <>
Date: Thu, 28 Apr 2011 10:35:24 +1200

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.


         Rolf Turner mailing list PLEASE do read the posting guide and provide commented, minimal, self-contained, reproducible code. Received on Wed 27 Apr 2011 - 22:43:21 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 28 Apr 2011 - 03:10:33 GMT.

Mailing list information is available at Please read the posting guide before posting to the list.

list of date sections of archive