ich eine n x p
Matrix haben, die wie folgt aussieht:„Diagonalisierung“ jede Zeile einer Matrix
n = 100
p = 10
x <- matrix(sample(c(0,1), size = p*n, replace = TRUE), n, p)
Ich möchte A
eine n x p x p
Array erstellen, deren k
ten Element entlang der ersten Dimension ist eine p x p
Diagonalmatrix enthält die Elemente von x[k,]
. Was ist der effizienteste Weg, dies in R zu tun? Ich suche nach einem Weg, der outer
(oder einen anderen vektorisierten Ansatz) anstelle einer der apply
Funktionen verwendet.
Lösung lapply
mit:
A <- aperm(simplify2array(lapply(1:nrow(x), function(i) diag(x[i,]))), c(3,2,1))
Ich bin für etwas effizienter als diese suchen.
Danke.