scale function within a for-loop?
Hi I maybe mistaken but scale(your.matrix) gives you matrix scaled in the way you want.
apply(scale(as.matrix(kalcin[,3:7])), na.rm=T,2,sd)
vodofe stroz l a b
1 1 1 1 1
apply(scale(as.matrix(kalcin[,3:7])), na.rm=T,2,mean)
vodofe stroz l a b 1.990322e-15 -5.025086e-14 8.581765e-14 3.588313e-15 -1.370877e-15 HTH Petr
On 20 Sep 2005 at 9:13, Frank Schmid wrote:
I have a data matrix containing around 180 variables and more than 470 observations for each and no missing values. Within a for-loop, the first step of calculations is to standardize each column, such that the mean of each column is zero and the sd is one. The for-loop starts with a subset of the initial matrix and includes all columns but only a third of the rows. The loop "works itself through" the whole matrix and adds everytimes one row, so in the last loop, the whole data matrix is used. The standardization within the loop is done using the "scale" function. Now, my problem is that with all the 180 variables, either the for-loop or the scale function does not work properly, as the resulting matrix after the standardization does not have the same dimensions anymore as it had before. The matrix is no longer a 180*470 matrix, but a 180*130 matrix. If, however, I include only 130 variables instead of 180, the result is correct, the dimensions are right and each column indeed has mean zero and sd one. Can anyone please tell me, why this problem appears? Would there be a way that gives the same result without using a for-loop? Thanks [[alternative HTML version deleted]]
______________________________________________ R-help at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Petr Pikal petr.pikal at precheza.cz