On Thu, 2007-11-15 at 15:51 +0100, A M Lavezzi wrote: > Hello > > I have this problem. I have a large matrix of this sort: > > > prova > [,1] [,2] [,3] [,4] > [1,] 3 3 3 3 > [2,] 3 3 3 1 > [3,] 1 3 3 3 > [4,] 1 1 1 3 > [5,] 3 1 1 3 > [6,] 3 1 1 3 > [7,] 1 3 1 3 > [8,] 1 3 3 3 > > What I want to do is to count the number of > sequences of ones and stack the results in a > vector, which I will subsequently use to build an istogram (or a density) > > I mean: in the matrix "prova" I have two > sequences of length two in column 1, one sequence > of length three in column 2, one sequence of > length four in column 3 and one sequence of > length one in column 4. (I know I can actually > turn the matrix into a vector by using rep(prova)) > > I would like to get to a vector such as : xx = [1,2,1,1]
I presume a typo above and that it should be: xx = [2,1,1,1] ? If so: > unlist(lapply(apply(prova, 2, rle), function(x) length(x$lengths[x$values == 1]))) [1] 2 1 1 1 See ?rle to get the basics of identifying runs of values. HTH, Marc Schwartz ______________________________________________ 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.