Ersetzen von Matrixelementen, die von einer anderen Matrix indiziert wurden
Nach mehrstündiger Suche greife ich auf Ihr Fachwissen zurück. Anfänger in R, ich versuche, meinen Code zu beschleunigen. Mein Ziel ist es, die Werte in einer Matrix zu ersetzenA
. Ich möchte jedoch Werte ersetzen, die auf zwei Vektoren einer anderen Matrix basierenB
. B[, 1]
ist der Name der Zeilei
der MatrixA
. Die zweite Spalte,B[, 2]
entspricht dem Namen der Spalte der MatrixA
.
Die erste Version meines Codes war die Verwendung der Match-Funktion in einer Schleife.
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 erlaubte es 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 zu lang. Also dachte ich, das @ zu verwendapply
Funktion. Dafür muss ich @ verwendapply
in jeder Zeile Vektoren vonB
.
Benutztapply
Funktion eine gute Möglichkeit? Oder gehe ich falsch?