When entering a list with array elements, each element must be a 2-way or 3-way array. The list elements are treated as the 3rd mode (for list of 2-way arrays) or the 4th mode (for list of 3-way arrays) in the formulas provided in the Description.
Examples
########## EXAMPLE 1 ##########X <- matrix(rnorm(2000), nrow =100, ncol =20)Xr <- nscale(X, mode =2)# scale columns to newscale=1sqrt(colMeans(Xr^2))Xr <- nscale(X, mode =2, newscale =2)# scale columns to newscale=2sqrt(colMeans(Xr^2))########## EXAMPLE 2 ##########Xold <- X <- matrix(rnorm(400), nrow =20, ncol =20)iter <-0chk <-1# iterative scaling of modes 1 and 2while(iter<500& chk>=10^-9){ Xr <- nscale(Xold, mode =1) Xr <- nscale(Xr, mode =2) chk <- sum((Xold-Xr)^2) Xold <- Xr
iter <- iter +1}iter
sqrt(rowMeans(Xr^2))sqrt(colMeans(Xr^2))########## EXAMPLE 3 ##########X <- array(rnorm(20000), dim = c(100,20,10))Xc <- nscale(X, mode =2)# scale within columnssqrt(rowMeans(aperm(Xc, perm = c(2,1,3))^2))########## EXAMPLE 4 ##########X <- array(rnorm(100000), dim = c(100,20,10,5))Xc <- nscale(X, mode =4)# scale across 4-th modesqrt(rowMeans(aperm(Xc, perm = c(4,1,2,3))^2))########## EXAMPLE 5 ##########X <- replicate(5, array(rnorm(20000), dim = c(100,20,10)), simplify =FALSE)# mean square of 1 (new way)Xc <- nscale(X)rowSums(sapply(Xc,function(x) rowSums(x^2)))/(20*10*5)# mean square of 1 (old way)Xc <- nscale(X, ssnew =(20*10*5))rowSums(sapply(Xc,function(x) rowSums(x^2)))/(20*10*5)