Supponiamo di avere una matrice n di 2 e una funzione che accetta un vettore 2 come uno dei suoi argomenti. Vorrei applicare la funzione a ciascuna riga della matrice e ottenere un vettore n. Come fare questo in R?Applicare una funzione a ogni riga di una matrice o di un frame di dati
Per esempio, vorrei calcolare la densità di una distribuzione normale standard 2D su tre punti:
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))
Come applicare la funzione per ogni fila di out
?
Come passare i valori per gli altri argomenti oltre ai punti della funzione nel modo specificato?
Grazie! Cosa succede se le righe della matrice non sono il primo argomento della funzione? Come specificare a quale arg di funzione è assegnata ogni riga della matrice? – Tim
Leggi la guida per 'apply()' - scorre per riga (quando il secondo argomento è 1, altrimenti per colonna) e la riga corrente (o colonna) è sempre il primo argomento. Ecco come sono definite le cose. –
@Tim: se usi una funzione R interna e la riga non è il primo argomento, fallo come Dirk e crea la tua funzione personalizzata dove la riga ** è ** il primo argomento. –