Dear Richard, Martin, Dimitris and Domenico

thank you very much for your help.

I must say that the fastest procedure appears to be the one suggested by Richard
This runs pretty quickly:
unSpells <- nrow(Atr) - apply(Atr,2,function(x) max(which(x==1))) #c(4,0,7,0)
If I may abuse of your kindness (and maybe of other R users), let me specify the following: I need to simulate this process for a very high number of periods (hundreds of thousands). The part of the code I am using right now, which follows Richard's suggestion, is:

unSpells <- (tt+1) - apply(Atr[1:(tt+1),],2,function(x) max(which(x==1)))
unSpells[unSpells==0]=1

where "tt" indicates the period reached by the simulation (I also need to turn the zeros in ones in "unSpells").

So, the function applies to a portion of the Atr matrix with a number of rows increasing with tt.

In this case, however, the "max" operation applies to the whole column (whose length, clearly, increases with tt as well), while it would be optimal to have this operation "forgetting" the part of the column examined in the previous step.

If you have any suggestion, I would be very grateful.

Thanks to all!

Mario



--
Andrea Mario Lavezzi
Dipartimento di Studi su Politica, Diritto e Società
Università di Palermo
Piazza Bologni 8
90134 Palermo, Italy
tel. ++39 091 6625600
fax ++39 091 6112023
skype: lavezzimario
email: lavezzi (at) unipa.it
web: http://www.unipa.it/~lavezzi

______________________________________________
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.

Reply via email to