Thanks, works nicely. I have to do some clocking to see how much the
improvement is, but I surely learnt again.
Attentive readers might have noticed my initial code contains an error.
tmp <- x[pos2[i]:pos2[i+1]]
should be:
tmp <- x[pos2[i]:(pos2[i+1]-1)]
off course...
On Tue, May 4, 2010 at 5:50 PM, jim holtman wrote:
> Try this:
>
> > x <- 1:10
> > pos <- c(1,4,7)
> > pat <- rep(seq_along(pos), times=diff(c(pos, length(x) + 1)))
> > split(x, pat)
> $`1`
> [1] 1 2 3
> $`2`
> [1] 4 5 6
> $`3`
> [1] 7 8 9 10
>
>
>
> On Tue, May 4, 2010 at 11:29 AM, Joris Meys wrote:
>
>> Dear all,
>>
>> I'm trying to optimize code and want to avoid for-loops as much as
>> possible.
>> I'm applying a calculation on subvectors from a big one, and I get the
>> subvectors by using a vector of starting positions:
>>
>> x <- 1:10
>> pos <- c(1,4,7)
>> n <- length(x)
>>
>> I try to do something like this :
>> pos2 <- c(pos, n+1)
>>
>> out <- c()
>> for(i in 1:n){
>> tmp <- x[pos2[i]:pos2[i+1]]
>> out <- c(out, length(tmp))
>> }
>>
>> Never mind the length function, I apply a far more complicated one. It's
>> about the use of the indices in the for-loop. I didn't see any way of
>> doing
>> that with an apply, unless there is a very convenient way of splitting my
>> vector in a list of the subvectors or so.
>>
>> Anybody an idea?
>> Cheers
>> --
>> Joris Meys
>> Statistical Consultant
>>
>> Ghent University
>> Faculty of Bioscience Engineering
>> Department of Applied mathematics, biometrics and process control
>>
>> Coupure Links 653
>> B-9000 Gent
>>
>> tel : +32 9 264 59 87
>> Joris.Meys@Ugent.be
>> -------------------------------
>> Disclaimer : http://helpdesk.ugent.be/e-maildisclaimer.php
>>
>> [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help@r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
>
>
> --
> Jim Holtman
> Cincinnati, OH
> +1 513 646 9390
>
> What is the problem that you are trying to solve?
>
--
Joris Meys
Statistical Consultant
Ghent University
Faculty of Bioscience Engineering
Department of Applied mathematics, biometrics and process control
Coupure Links 653
B-9000 Gent
tel : +32 9 264 59 87
Joris.Meys@Ugent.be
-------------------------------
Disclaimer : http://helpdesk.ugent.be/e-maildisclaimer.php
[[alternative HTML version deleted]]