Ich möchte paarweise Kombinationen von Elementen in einer Liste in R durchlaufen und dann eine Funktion ausführen, die die Kombination als Eingabe verwendet.Anwenden einer Funktion über Kombinationen von Elementen in einer Liste
In diesem minimalen Beispiel definiere ich (1) drei Matrizen, (2) kombiniere sie zu einer Liste, die die Matrizen als Elemente enthält, und dann (3) möchte ich das Skalarprodukt der Kombinationen der Elemente in der Liste (dh Matrix 1 gegenüber Matrix 2 und Matrix 2 gegenüber Matrix 3).
set.seed
m1 = as.matrix(replicate(2, rnorm(2)))
m2 = as.matrix(replicate(2, rnorm(2)))
m3 = as.matrix(replicate(2, rnorm(2)))
matrix.list = list(m1, m2, m3)
dot.prod = function(matrix.x, matrix.y){
return(matrix.x %*% matrix.y)
}
Bisher habe ich die alle Kombinationen von matrix.list als Eingänge für dot.prod haben folgende() eine verschachtelte Schleife.
for (i in 1:length(matrix.list)){
for (j in 1:length(matrix.list)){
print(dot.prod(matrix.list[[i]], matrix.list[[j]]))
}
}
Ist es möglich, dies mithilfe einer kombinatorischen Funktion in R (wie combn()) zu tun? Für Vorschläge wäre ich sehr dankbar.
Edit: die Funktion selbst spielt keine Rolle - ich möchte wissen, wie Kombinationen von Elementen aus einer Liste als Eingänge für jede R-Funktion
Könnten Sie ein reproduzierbares Beispiel liefern (fügen Sie einfach 'set.seed' nach oben) und die Show die gewünschte Ausgabe für dieses Beispiel? Es ist mir nicht ganz klar, welche Struktur du am Ende haben willst und mit welcher Struktur du beginnst. – lmo