apply(x, MARGIN, FUN, ...)
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 .
|
FUN
returns a vector of length n
, then
apply
returns an array of dimension c(n,dim(x)[MARGIN])
if n > 1
. If n
equals 1
, 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]
.
lapply
, tapply
, sweep
.## Compute row and column sums for a matrix: x <- cbind(x1 = 3, x2 = c(4:1, 2:5)) dimnames(x)[[1]] <- letters[1:8] 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))) all( apply(x,2, is.vector)) # TRUE [was not in R <= 0.63.2] ## Sort the columns of a matrix apply(x, 2, sort) ##- function with extra args: cave <- function(x, c1,c2) c(mean(x[c1]),mean(x[c2])) apply(x,1, cave, c1="x1", c2=c("x1","x2")) ma <- matrix(c(1:4, 1, 6:8), nr = 2) ma apply(ma, 1, table) #--> a list of length 2 apply(ma, 1, quantile)# 5 x n matrix with rownames all(dim(ma) == dim(apply(ma, 1:2, sum)))## apply BUG [R <= 0.63.0] ## Compute row and column sums for a matrix: x <- cbind(x1 = 3, x2 = c(4:1, 2:5)) dimnames(x)[[1]] <- letters[1:8] 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))) all( apply(x,2, is.vector)) # TRUE [was not in R <= 0.63.2] ## Sort the columns of a matrix apply(x, 2, sort) ##- function with extra args: cave <- function(x, c1,c2) c(mean(x[c1]),mean(x[c2])) apply(x,1, cave, c1="x1", c2=c("x1","x2")) ma <- matrix(c(1:4, 1, 6:8), nr = 2) ma apply(ma, 1, table) #--> a list of length 2 apply(ma, 1, quantile)# 5 x n matrix with rownames all(dim(ma) == dim(apply(ma, 1:2, sum)))## apply BUG [R <= 0.63.0]