ID EN
Apply Functions

apply

R Base 3.6.2 🇮🇩 Bahasa Indonesia

Mengembalikan vektor atau larik atau daftar nilai yang diperoleh dengan menerapkan fungsi pada margin larik atau matriks.

Syntax

R
apply(X, MARGIN, FUN, …)

Arguments

Parameter Deskripsi
X an array, including a matrix.
MARGIN a vector giving the subscripts which the function will be applied over. E.g., for a matrix 1 indicates rows, 2 indicates columns, c(1, 2) indicates rows and columns. Where X has named dimnames, it can be a character vector selecting dimension names.
FUN the function to be applied: see ‘Details’. In the case of functions like +, %*%, etc., the function name must be backquoted or quoted.
… optional arguments to FUN.

Return Value

Jika setiap panggilan ke FUN mengembalikan vektor dengan panjang n, maka apply akan mengembalikan array berdimensi c(n, dim(X)[MARGIN]) jika n > 1. Jika n sama dengan 1, apply akan mengembalikan vektor jika MARGIN memiliki panjang 1 dan array berdimensi dim(X)[MARGIN] sebaliknya. Jika n adalah 0, hasilnya memiliki panjang 0 tetapi dimensinya belum tentu 'benar'. Jika panggilan ke FUN mengembalikan vektor dengan panjang berbeda, apply mengembalikan daftar panjang prod(dim(X)[MARGIN]) dengan dim disetel ke MARGIN jika panjangnya lebih dari satu. Dalam semua kasus

Details

Jika X bukan array tetapi objek kelas dengan nilai redup bukan nol (seperti bingkai data), terapkan upaya untuk memaksanya ke array melalui as.matrix jika berbentuk dua dimensi (misalnya bingkai data) atau melalui as.array. FUN ditemukan melalui panggilan ke match.fun dan biasanya berupa fungsi atau simbol (misalnya, nama dengan tanda kutip balik) atau string karakter yang menentukan fungsi yang akan dicari dari lingkungan panggilan yang akan diterapkan. Argumen di … tidak boleh memiliki nama yang sama dengan argumen lainnya, dan mungkin diperlukan kehati-hatian untuk menghindari pencocokan sebagian dengan MARGIN atau FUN. Dalam kode tujuan umum, praktik yang baik adalah memberi nama tiga argumen pertama jika … dilewati: hal ini menghindari pencocokan parsial ke MARGIN atau FUN dan memastikan bahwa pesan kesalahan yang masuk akal diberikan jika argumen bernama X, MARGIN

Contoh

Example
R
# NOT RUN {
## 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)))

stopifnot( apply(x, 2, is.vector))

## Sort the columns of a matrix
apply(x, 2, sort)

## keeping named dimnames
names(dimnames(x)) <- c("row", "col")
x3 <- array(x, dim = c(dim(x),3),
	    dimnames = c(dimnames(x), list(C = paste0("cop.",1:3))))
identical(x,  apply( x,  2,  identity))
identical(x3, apply(x3, 2:3, identity))
# }
# NOT RUN {
##- 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), nrow = 2)
ma
apply(ma, 1, table)  #--> a list of length 2
apply(ma, 1, stats::quantile) # 5 x n matrix with rownames

stopifnot(dim(ma) == dim(apply(ma, 1:2, sum)))

## Example with different lengths for each call
z <- array(1:24, dim = 2:4)
zseq <- apply(z, 1:2, function(x) seq_len(max(x)))
zseq         ## a 2 x 3 matrix
typeof(zseq) ## list
dim(zseq) ## 2 3
zseq[1,]
apply(z, 3, function(x) seq_len(max(x)))
# a list without a dim attribute
# }

See Also

lapply and there simplify2array; tapply and convenience functions sweep and aggregate.