Supongamos que tengo una matriz n por 2 y una función que toma un 2-vector como uno de sus argumentos. Me gustaría aplicar la función a cada fila de la matriz y obtener un n-vector. ¿Cómo hacer esto en R?Aplicar una función a cada fila de una matriz o un marco de datos
Por ejemplo, me gustaría para calcular la densidad de una distribución normal estándar 2D en tres puntos:
bivariate.density(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))
Cómo aplicar la función a cada fila de out
?
¿Cómo pasar valores para los otros argumentos además de los puntos a la función en la forma que especifique?
Gracias! ¿Qué sucede si las filas de la matriz no son el primer arg de la función? ¿Cómo especificar a qué arg de la función se asigna cada fila de la matriz? – Tim
Lea la ayuda para 'apply()' - barre por fila (cuando el segundo arg es 1, sino por columna), y la fila actual (o col) es siempre el primer argumento. Así es como se definen las cosas. –
@Tim: si usa una función R interna y la fila no es la primera arg, haga lo que hizo Dirk y haga su propia función personalizada donde la fila ** es ** la primera arg. –