Chcę zastosować funkcję do wszystkich kombinacji parami elementów listy. Każdy element jest wektorem o tej samej długości. Chciałbym, aby dane wyjściowe w formacie matrycy n x n
, n
były liczbą elementów na mojej liście.Zastosuj funkcję do wszystkich kombinacji parami elementów listy w R
Rozważmy następujący przykład:
# 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)
ta pętla działa, ale jest powolny i wyjście nie jest sformatowana jako matryca
# Applying function
out <- list()
for(i in 1:nrow(comb)) {
out[[i]] <- foo(l[[comb[i, 'x']]], l[[comb[i, 'y']]])
}
Każdy pomysł?
'zewnętrzny (l, l, wektoryzacja (foo))' –
Wow! Dzięki za odpowiedź, jest to o wiele szybsze;) – goclem