> Dear Contributors, > I am asking help on the way how to solve a problem related to loops for > that I always get confused with. > I would like to perform the following procedure in a compact way. > > Consider that p is a matrix composed of 100 rows and three columns. I need > to calculate the sum over some rows of each > column separately, as follows: > > fa1<-(colSums(p[1:25,])) > > fa2<-(colSums(p[26:50,])) > > fa3<-(colSums(p[51:75,])) > > fa4<-(colSums(p[76:100,])) > > fa5<-(colSums(p[1:100,])) > > > > and then I need to apply to each of them the following: > > > fa1b<-c() > > for (i in 1:3){ > > fa1b[i]<-(100-(100*abs(fa1[i]/sum(fa1[i])-(1/3)))) > > } >
I think I'd do it this way (correcting for the presumed error that Rui Barradas noted): > dim( p ) = c(25,4,3) > p2 = apply(p, c(2,3), sum) > p3 = t(apply(p2, 1, function(fa) 100-(100*abs(fa/sum(fa)-(1/3))) ) ) p3 now contains all your results except the one including all the data, which is trivial to compute. -- Richard D. Morey Assistant Professor Psychometrics and Statistics Rijksuniversiteit Groningen / University of Groningen http://drsmorey.org/research/rdmorey ______________________________________________ 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.