[R] Odp: How to repeat "for" function?

Petr PIKAL petr.pikal at precheza.cz
Tue Feb 2 09:12:45 CET 2010


Hi

r-help-bounces at r-project.org napsal dne 01.02.2010 18:14:04:

> 
> Dear Petr,
> 
> The intention is to get a ratio value for every observations (1400 obs) 
for 
> every variable (4 variables). 

Well, maybe that

mat<-matrix(runif(12),4,3)
ratiomat<-t(t(mat)/vec)

> 
> And from the ratios, I would like to rank the variables based on how 
many 
> times the variable being the highest among 4 of them (or the total 
number of 
> being the highest ratios, out of 1400 times).

Eh. I am stupid enough not to understand what you mean. Which variables? 
Do you mean maximum in each column?

 apply(ratiomat,2, max)
[1] 0.9686974 0.4097230 0.3085468

> 
> >From the 1400 by 4 dataset, I ran a principal component analysis and 
I'll use
> only the first PC for the calculation of the ratios.
> 
> The PC (a vector) will has 4 values for each variables.
> 
> The ratios actually representing the contribution of a variable divide 
by the 
> total contribution from the first PC.

I can not say much about principal components analysis above what is 
described in help page. 

> 
> Does it make sense to you now? Thank you very much for giving a 
response. I 
> really appreciate it.

Not much. Reproducible code could be more informative then describing a 
problem by your words.

Regards
Petr

> 
> Best regards,
> ayu
> 
> 
> 
> 
> ________________________________
> From: Petr Pikal [via R] <ml-node+1458931-701777745 at n4.nabble.com>
> 
> Sent: Mon, 1 February, 2010 15:58:50
> Subject: Odp: How to repeat "for" function?
> 
> Hi 
> few comments 
> 
> [hidden email] napsal dne 01.02.2010 14:51:17: 
> 
> > 
> > Dear Users, 
> > 
> > I have one problem here, I tried many time and even read a few notes 
on 
> > writing function but still..... 
> > 
> > 
> > Can anyone help me on how to simplify Part B (please refer the 
> programming 
> > below), so that I don't have to repeat the calculation of "num" and 
"r" 
> ? 
> 
> > 
> > 
> > 
> > Thank you very much..every help is very much appreciated... 
> > 
> > 
> > ## Part A 
> > n=1400 
> > m=matrix(c(0,0,0,0),4,1) 
> > m2=matrix(c(0,2,0,0),4,1) 
> > 
c4<-matrix(c(1.0,0.2,-0.5,0.3,0.2,1,0.2,-0.5,-0.5,0.2,1,0.2,0.3,-0.5,0.2,1),
> 4,4,byrow=T) 
> > set.seed(428) 
> > X=mvrnorm(n,m2,c4) 
> > X.pca<-princomp(X) 
> > loadings(X.pca) 
> > pc=X.pca$loadings[,1] 
> > 
> > ## Â Part B 
> > num1=rep(1:n) 
> 
> is same as 
> num1 <- 1:n 
> 
> > for(i in 1:n)num1[i]=pc[1]%*%X[i,1] 
> 
> If I understand what the above code does I am a bit surprised 
> 
> pc[1] is 
> > pc[1] 
> [1] 0.525037 
> 
> for each number in cycle 
> 
> X[i,1] is again a number 
> 
> > X[1,1] 
> [1] 0.7512862 
> > X[2,1] 
> [1] 0.5020333 
> > 
> 
> so it basically  results in 
> 
> pc[1] * X[,1] 
> 
> which you can compute for all 4 columns by 
> 
> kronecker(pc, X, "*") 
> 
> But I wonder if this is what you really want. 
> 
> Maybe you shall think it over again and try with some smaller manageable 

> subset lit 
> 
> smallX <- X[1:5,] 
> 
> do all your computation and if it does not produce what you want, 
specify 
> what you want. 
> 
> Regards 
> Petr 
> 
> 
> 
> > num2=rep(1:n) 
> > for(i in 1:n)num2[i]=pc[2]%*%X[i,2] 
> > num3=rep(1:n) 
> > for(i in 1:n)num3[i]=pc[3]%*%X[i,3] 
> > num4=rep(1:n) 
> > for(i in 1:n)num4[i]=pc[4]%*%X[i,4] 
> > 
> > den=rep(1:n) 
> > for(i in 1:n)den[i]=pc%*%X[i,] 
> > 
> > 
> > r1=num1/den 
> > r2=num2/den 
> > r3=num3/den 
> > r4=num4/den 
> > MLAV=sum(r2>r1 & r2>r3 & r2>r4) 
> > MLAV 
> > 
> > Best regards, 
> > ayu 
> > 
> > 
> > -- 
> > View this message in context: 
http://n4.nabble.com/How-to-repeat-for-function-
> > tp1458806p1458806.html 
> > Sent from the R help mailing list archive at Nabble.com. 
> > 
> > ______________________________________________ 
> > [hidden email] 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. 
> 
> ______________________________________________ 
> [hidden email] 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. 
> 
> 
> ________________________________
> 
> View message @ 
http://n4.nabble.com/How-to-repeat-for-function-tp1458806p1458931.html 
> To unsubscribe from How to repeat "for" function?, click here. 
> 
> 
> 
> 
> -- 
> View this message in context: 
http://n4.nabble.com/How-to-repeat-for-function-
> tp1458806p1459009.html
> Sent from the R help mailing list archive at Nabble.com.
> 
>    [[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.



More information about the R-help mailing list