An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20130127/8ea8a440/attachment.pl>
Loops
4 messages · Rui Barradas, arun, Francesca PANCOTTO
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 at 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.
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 at sapo.pt>
To: Francesca <francesca.pancotto at gmail.com>
Cc: r-help at 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 at 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 at 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.
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20130128/a61792b0/attachment.pl>