Nach mehreren Stunden der Suche, wende ich mich an Ihr Fachwissen. Anfänger in R versuche ich meinen Code zu beschleunigen. Mein Ziel ist es, die Werte in einer Matrix A
zu ersetzen. Ich möchte jedoch Werte basierend auf zwei Vektoren einer anderen Matrix B
ersetzen. B[, 1]
ist der Name der Zeile i
der Matrix A
. Die zweite Spalte B[, 2]
entspricht dem Namen der Spalte der Matrix A
.Matrixelemente durch eine andere Matrix ersetzen
Die erste Version meines Codes war die Match-Funktion in einer Schleife zu verwenden.
for(k in 1:L){
i <- B[k,1]
j <- B[k,2]
d <- match(i,rownames(A))
e <- match(j,colnames(A))
A[d, e] <- 0
}
Die zweite Version erlaubt mir ein wenig zu beschleunigen:
for(k in 1:L) {
A[match(B[k,1],rownames(A)), match(B[k,2],colnames(A))] <- 0
}
die Bearbeitungszeit ist jedoch lang, zu lang. Also dachte ich mir, die apply
Funktion zu verwenden. Dazu muss ich apply
in jeder Reihe Vektoren von B
verwenden.
Funktioniert die Verwendung von apply
ein guter Weg? Oder ich gehe in die falsche Richtung?