Ich möchte eine Funktion auf alle paarweisen Kombinationen von Listenelementen anwenden. Jedes Element ist ein Vektor mit der gleichen Länge. Ich möchte die Ausgabe in einem n x n
Matrixformat, n
ist die Anzahl der Elemente in meiner Liste.Anwenden einer Funktion auf alle paarweisen Kombinationen von Listenelementen in R
Betrachten Sie das folgende Beispiel:
# Generating data
l <- list()
for(i in 1:5) l[[i]] <- sample(0:9, 5, T)
# Function to apply
foo <- function(x, y) 1 - sum(x * y)/sqrt(sum(x^2) * sum(y^2))
# Generating combinations
comb <- expand.grid(x = 1:5, y = 1:5)
Diese Schleife funktioniert, aber es ist langsam und die Ausgabe wird nicht als Matrix
# Applying function
out <- list()
for(i in 1:nrow(comb)) {
out[[i]] <- foo(l[[comb[i, 'x']]], l[[comb[i, 'y']]])
}
Jede Idee formatiert?
'äußere (l, l, vektorisieren (foo))' –
Wow! Danke für deine Antwort, es ist so viel schneller;) – goclem