controlledApply {arrayMagic} | R Documentation |
Same functionality as simpleApply
but
possibly faster. In certain circumstances the function
apply
is used instead of simpleApply
which improves the performace.
controlledApply(arrayObject, dimensions, func, funcResultDimensionality)
arrayObject |
object of class array |
dimensions |
increasing numeric vector |
func |
unary function |
funcResultDimensionality |
numeric (vector) specifying
the dimensionality of the return value of func |
An array of
dim=c(dim(arrayObject[dimensions]),funcResultDimensionality)
.
You may want to use aperm
to rearrange the dimensions.
Andreas Buness <a.buness@dkfz.de>
a <- array(c(1:30),dim=c(3,2,5)) r <- controlledApply(a, 1, function(x){return(x[2,5])}, 1) stopifnot( all(r == matrix(data=c(28:30)))) r <- controlledApply(a, 2, function(x){return(x[,])}, c(3,5)) stopifnot( all( a == aperm(r,c(2,1,3)) ) ) vec <- 1:10; dim(vec) <- c(10,1) mat <- matrix(data=rep(1:10,4),nrow=10,ncol=4,byrow=FALSE) r <- controlledApply(mat,1,function(y){return(mean(y))},1) stopifnot(all(r==vec)) r <- controlledApply(mat, 1:2, function(x) return(x), 1) stopifnot( all(r[,,1] == mat) ) r <- controlledApply(a, c(1,3) , function(x) return(x), dim(a)[2]) stopifnot( all(aperm(r[,,],c(1,3,2)) == a) ) r <- controlledApply(a, 1:2, function(x) return(x[2]), 1) stopifnot( all(r[,,] == a[,,2]) ) r <- controlledApply(a, 1, function(x) return(x), c(dim(a)[2],dim(a)[3])) stopifnot( all( r== a ) )