[ top | up ]

Apply Functions Over Array Margins

Syntax

apply(x, MARGIN, FUN, ...)

Arguments

x the array to be used.
MARGIN a vector giving the subscripts which the function will be applied over. 1 indicates rows, 2 indicates columns, c(1,2) indicates rows and columns.
FUN the function to be applied. In the case of functions like +, %*%, etc., the function name must be quoted.
... optional arguments to FUN.

Value

If each call to FUN returns a vector of length n, then apply returns an array of dimension c(n,dim(x)[MARGIN]) if n > 1. If LANG(n EQUALS 1), LANG(apply) returns a vector if MARGIN has length 1 and an array of dimension dim(x)[MARGIN] otherwise.

If the calls to FUN return vectors of different lengths, apply returns a list of length dim(x)[MARGIN].

See Also

lapply, tapply, sweep.

Examples

# Compute row and column sums for a matrix: x <- cbind(x1=3, x2=c(4:1,2:5)) apply(x, 2, mean, trim = .2) col.sums <- apply(x, 2, sum) row.sums <- apply(x, 1, sum) rbind(cbind(x, Rtot = row.sums), Ctot=c(col.sums, sum(col.sums))) # Sort the columns of a matrix apply(x, 2, sort) ma <- matrix(c(1:4, 1, 6:8), nr = 2) ma apply(ma, 1, table)#--> a list of length 2