Первым шагом будет создание объекта функции, а затем его применение. Если вы хотите, чтобы матричный объект имел такое же количество строк, вы можете предварительно определить его и использовать форму объекта [], как показано (в противном случае возвращаемое значение будет упрощено до вектора):
bvnormdens <- function(x=c(0,0),mu=c(0,0), sigma=c(1,1), rho=0){
exp(-1/(2*(1-rho^2))*(x[1]^2/sigma[1]^2+
x[2]^2/sigma[2]^2-
2*rho*x[1]*x[2]/(sigma[1]*sigma[2]))) *
1/(2*pi*sigma[1]*sigma[2]*sqrt(1-rho^2))
}
out=rbind(c(1,2),c(3,4),c(5,6));
bvout<-matrix(NA, ncol=1, nrow=3)
bvout[] <-apply(out, 1, bvnormdens)
bvout
[,1]
[1,] 1.306423e-02
[2,] 5.931153e-07
[3,] 9.033134e-15
Если вы хотите использовать параметры, отличные от параметров по умолчанию, то вызов должен включать именованные аргументы после функции:
bvout[] <-apply(out, 1, FUN=bvnormdens, mu=c(-1,1), rho=0.6)
apply () также может использоваться для массивов более высокой размерности, а аргумент MARGIN может быть вектором, а также одним целым числом.