Angenommen, ich habe eine n von 2 Matrix und eine Funktion, die einen 2-Vektor als eines seiner Argumente nimmt. Ich möchte die Funktion auf jede Zeile der Matrix anwenden und einen n-Vektor erhalten. Wie macht man das in R?Wenden Sie eine Funktion auf jede Zeile einer Matrix oder eines Datenrahmens
Zum Beispiel würde Ich mag die Dichte eines 2D-Standardnormalverteilung auf drei Punkte berechnen:
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))
So wird die Funktion jeder Reihe von out
bewerben?
Wie übergeben Sie Werte für die anderen Argumente neben den Punkten auf die Funktion in der Art, wie Sie angeben?
Dank verwendet werden! Was ist, wenn die Zeilen der Matrix nicht das erste Argument der Funktion sind? Wie spezifiziert man, welchem Argument der Funktion jede Zeile der Matrix zugewiesen ist? – Tim
Lesen Sie die Hilfe für 'apply()' - es wird nach Zeile durchsucht (wenn das zweite Argument 1 ist, sonst nach Spalte), und die aktuelle Zeile (oder Spalte) ist immer das erste Argument. So sind die Dinge definiert. –
@Tim: Wenn Sie eine interne R-Funktion verwenden und die Zeile nicht die erste Arg ist, tun Sie wie Dirk und machen Sie Ihre eigene benutzerdefinierte Funktion, wo Zeile ** ist ** der erste Arg. –