Возможно, вы можете получить вдохновение в следующем примере.
Анонимная функция использует жестко запрограммированную функцию dummy
и другую функцию, аргумент fun
установлен равный log
.
dummy <- function(x){
a <- max(x)
b <- min(x)
c(a, b)
}
z <- matrix(c(2,3,4,5,6,7,8,9,10), nrow = 3)
apply(z, 2, dummy)
apply(z, 2, function(x, fun){
y <- dummy(x)
y <- fun(y[2])
y
}, fun = log)
#[1] 0.6931472 1.6094379 2.0794415
Другая возможность состоит в том, чтобы itworks
требовалось два аргумента: вектор x
и функция, выбранная в каждом конкретном случае.
itworks <- function(x, fun){
qq <- quantile(x)
fun(qq[2])
}
apply(z, 2, itworks, fun = sin)
#[1] 0.5984721 -0.7055403 0.7984871
Дело в том, что аргументы - это функциядубль может быть любым, включая другие функции.apply
имеет 3 обязательных аргумента, X
, MARGIN
и FUN
, плюс аргумент dots
.В аргументе dots вы можете передать все, что захотите, если FUN
примет это.