Hello R experts, I'd like to studentize a matrix (tmp1) by column using apply() function and skip some specific values such as zeros in the example below to tmp2 but not tmp3. I used the script below and only can get a matrix tmp3. Could you please help me to studentize the matrix (tmp1) without changing the zeros and generate a new matrix tmp2? Thanks, Joshua
tmp1 [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [1,] 15 7 9 49 60 3 2 0 [2,] 13 7 10 56 21 4 3 0 [3,] 10 2 12 50 19 1 0 2 [4,] 15 5 30 52 120 2 4 0 [5,] 12 9 71 76 211 4 3 1 [6,] 11 12 2 69 18 5 2 0 tmp2 [1,] 1.1296201 0.0000000 -0.5207910 -0.8630035 -0.1913482 -0.1132277 -0.9561829 0.0000000 [2,] 0.1613743 0.0000000 -0.4817316 -0.2380699 -0.6944435 0.5661385 0.2390457 0.0000000 [3,] -1.2909944 -1.4680505 -0.4036130 -0.7737273 -0.7202433 -1.4719601 0.0000000 0.7071068 [4,] 1.1296201 -0.5872202 0.2994548 -0.5951748 0.5826446 -0.7925939 1.4342743 0.0000000 [5,] -0.3227486 0.5872202 1.9008870 1.5474546 1.7565336 0.5661385 0.2390457 -0.7071068 [6,] -0.8068715 1.4680505 -0.7942062 0.9225210 -0.7331431 1.2455047 -0.9561829 0.0000000 tmp3 [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [1,] 1.1296201 0.0000000 -0.5207910 -0.8630035 -0.1913482 -0.1132277 -0.243975 -0.5976143 [2,] 0.1613743 0.0000000 -0.4817316 -0.2380699 -0.6944435 0.5661385 0.487950 -0.5976143 [3,] -1.2909944 -1.4680505 -0.4036130 -0.7737273 -0.7202433 -1.4719601 -1.707825 1.7928429 [4,] 1.1296201 -0.5872202 0.2994548 -0.5951748 0.5826446 -0.7925939 1.219875 -0.5976143 [5,] -0.3227486 0.5872202 1.9008870 1.5474546 1.7565336 0.5661385 0.487950 0.5976143 [6,] -0.8068715 1.4680505 -0.7942062 0.9225210 -0.7331431 1.2455047 -0.243975 -0.5976143 Here is my script: stud<- function(x){ x<-(x-mean(x))/sd(x) return (x) } tmp3<-apply(tmp1,2,stud) ______________________________________________ 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.