help-octave
[Top][All Lists]

## Re: Applying function to vector by index

 From: Iago Mosqueira Subject: Re: Applying function to vector by index Date: Mon, 9 Dec 2002 17:01:47 -0000

```Thanks, it works fine. I was doing just this for estimating the mean, but I
was somehow getting into memory problems (a 65000x1 vector, turning into a
sparse matrix with 15 datapoints). It's fine now. Yes, some general way
'sapply' style would be nice...

Thanks,

iago

----- Original Message -----
Sent: 09 December 2002 16:56
Subject: Re: Applying function to vector by index

> Iago,
>
> Sparse matrices are a likely candidate here.  Split your data with
> one column per bin:
>
> n = length(d);
> S = sparse(1:n,idx,d);
>
> Then the stats are:
>
> count = spsum(sparse(1:n,idx,1));
>         mean = spsum(S) ./ count;
>         var = spsum( (S - sparse(1:n,idx,mean(idx))).^2 ) ./ (count-1);
>
> Not as good as a generic split/apply operations I agree, but even
> with split/apply performance wouldn't be much better than a loop since
> you would still be interpreting var(x) for each bin separately.
>
> Paul Kienzle
>
> On Mon, Dec 09, 2002 at 04:22:17PM -0000, Iago Mosqueira wrote:
> > Hi,
> >
> > I have a long vector classified in ten bins of different length
according to
> > another vector. I want to estimate the variance, or any other function,
of
> > the values from the first vector for each of the categories described by
the
> > second, without using a loop. Is there any obvious way of doing this I
am
> > overlooking? In R one could do
> >
> >     sapply(split(d,idx),var)
> >
> > where d is my data vector and idx the index vector.
> >
> > Many thanks,
> >
> >
> > iago
> >
> >
> >
> >
> > -------------------------------------------------------------
> > Octave is freely available under the terms of the GNU GPL.
> >
> > Octave's home on the web:  http://www.octave.org
> > How to fund new projects:  http://www.octave.org/funding.html
> > Subscription information:  http://www.octave.org/archive.html
> > -------------------------------------------------------------
> >
>
>
>
> -------------------------------------------------------------
> Octave is freely available under the terms of the GNU GPL.
>
> Octave's home on the web:  http://www.octave.org
> How to fund new projects:  http://www.octave.org/funding.html
> Subscription information:  http://www.octave.org/archive.html
> -------------------------------------------------------------
>

-------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.

Octave's home on the web:  http://www.octave.org
How to fund new projects:  http://www.octave.org/funding.html
Subscription information:  http://www.octave.org/archive.html
-------------------------------------------------------------

```