Thanks to you all,
they are very useful and I am learning a lot.
Best,
Francesca

On 27 January 2013 19:20, arun <smartpink111@yahoo.com> wrote:

>
>
> 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 <ruipbarradas@sapo.pt>
> To: Francesca <francesca.pancotto@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.
>
>


-- 

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]]

