

apply {base}                                 R Documentation

_A_p_p_l_y _F_u_n_c_t_i_o_n_s _O_v_e_r _A_r_r_a_y _M_a_r_g_i_n_s

_U_s_a_g_e_:

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

_A_r_g_u_m_e_n_t_s_:

       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 func-
          tions like `+', `%*%', etc., the function name
          must be quoted.

     ...: optional arguments to `FUN'.

_V_a_l_u_e_:

     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 `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)[MAR-
     GIN]'.

_S_e_e _A_l_s_o_:

     `lapply', `tapply', and conveniency functions `sweep'
     and `aggregate'.

_E_x_a_m_p_l_e_s_:

     ## 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)))## wasn't ok before R 0.63.1

