Hi,
You could use library(plyr) as well library(plyr) pnew<-colSums(aaply(laply(split(as.data.frame(p),((1:nrow(as.data.frame(p))-1)%/% 25)+1),as.matrix),c(2,3),function(x) x)) res<-rbind(t(pnew),colSums(p)) row.names(res)<-1:nrow(res) res<- 100-100*abs(res/rowSums(res)-(1/3)) A.K. ----- Original Message ----- From: Rui Barradas <ruipbarra...@sapo.pt> To: Francesca <francesca.panco...@gmail.com> Cc: r-help@r-project.org Sent: Sunday, January 27, 2013 6:17 AM Subject: Re: [R] Loops Hello, I think there is an error in the expression 100-(100*abs(fa1[i]/sum(fa1[i])-(1/3))) Note that fa1[i]/sum(fa1[i]) is always 1. If it's fa1[i]/sum(fa1), try the following, using lists to hold the results. # Make up some data set.seed(6628) p <- matrix(runif(300), nrow = 100) idx <- seq(1, 100, by = 25) fa <- lapply(idx, function(i) colSums(p[i:(i + 24), ])) fa[[5]] <- colSums(p) fab <- lapply(fa, function(x) 100 - 100*abs(x/sum(x) - 1/3)) fab You can give names to the lists elements, if you want to. names(fa) <- paste0("fa", 1:5) names(fab) <- paste0("fa", 1:5, "b") Hope this helps, Rui Barradas Em 27-01-2013 08:02, Francesca escreveu: > 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)))) > > } > > > fa2b<-c() > > for (i in 1:3){ > > fa2b[i]<-(100-(100*abs(fa2[i]/sum(fa2[i])-(1/3)))) > > } > > > and so on. > > Is there a more efficient way to do this? > > Thanks for your time! > > Francesca > > ---------------------------------- > Francesca Pancotto, PhD > Università di Modena e Reggio Emilia > Viale A. Allegri, 9 > 40121 Reggio Emilia > Office: +39 0522 523264 > Web: https://sites.google.com/site/francescapancotto/ > ---------------------------------- > > [[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. > ______________________________________________ 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. ______________________________________________ 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.