It's easiest to explore the behavior of high-d apply when your test array has different extents on each dimension. That way you can easily see what's happening with each dimension. Also, when experimenting, use FUN=function(x) browser() to see what is getting passed to FUN.
The way I remember what apply() does is that the MAR= argument specifies the dimensions to be kept in the result. Iin apply(x, MAR, FUN), FUN gets passed an object with dimensions dim(x)[-MAR]. So, in your example, FUN is getting passed a matrix. The reason you get differently shaped results with mean, sd, and var is that each of these gives a differently shaped result (scalar, vector, and matrix) when given a matrix.
> a <- array(1:24, c(2,3,4)) > apply(a, 2, function(x) browser()) Called from: FUN(array(newX[, i], d.call, dn.call), ...) Browse[1]> dim(x) [1] 2 4 Browse[1]> x [,1] [,2] [,3] [,4] [1,] 1 7 13 19 [2,] 2 8 14 20 Browse[1]> mean(x) [1] 10.5 Browse[1]> sd(x) [1] 0.7071068 0.7071068 0.7071068 0.7071068 Browse[1]> var(x) [,1] [,2] [,3] [,4] [1,] 0.5 0.5 0.5 0.5 [2,] 0.5 0.5 0.5 0.5 [3,] 0.5 0.5 0.5 0.5 [4,] 0.5 0.5 0.5 0.5
hope this helps,
Tony Plate
At Thursday 12:01 PM 9/9/2004, [EMAIL PROTECTED] wrote:
Full_Name: jarek tuszynski Version: 1.8.1 OS: windows 2000 Submission from: (NULL) (198.151.13.10)
Example code: > a=array(1:27, c(3,3,3)) > apply(a,2, var) [,1] [,2] [,3] [1,] 1 1 1 [2,] 1 1 1 [3,] 1 1 1 [4,] 1 1 1 [5,] 1 1 1 [6,] 1 1 1 [7,] 1 1 1 [8,] 1 1 1 [9,] 1 1 1 > apply(a,2, mean) [1] 11 14 17 > apply(a,2, sd) [,1] [,2] [,3] [1,] 1 1 1 [2,] 1 1 1 [3,] 1 1 1
I could not figure out from the documentation how MARGIN argument of function
"apply" works in case of arrays with dimentions larger than 2, so I created the
above test code. I still do not know how it suppose to work but I should not get
the results with different dimentions, while calculating var and sd.
Hope this helps,
Jarek
______________________________________________ [EMAIL PROTECTED] mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
______________________________________________ [EMAIL PROTECTED] mailing list https://stat.ethz.ch/mailman/listinfo/r-devel