Je voudrais parcourir des combinaisons d'éléments par paire dans une liste dans R, puis exécuter une fonction en utilisant la combinaison comme entrée.Application d'une fonction sur des combinaisons d'éléments dans une liste
Dans cet exemple minimal, I (1) définit trois matrices, (2) les combine en une liste contenant les matrices en tant qu'éléments, puis (3) calcule le produit scalaire des combinaisons des éléments dans le liste (matrice 1 contre matrice 2 et matrice 2 contre matrice 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)
}
Jusqu'à présent, je donne les résultats suivants pour avoir toutes les combinaisons de matrix.list comme entrées pour dot.prod() en utilisant une boucle imbriquée.
for (i in 1:length(matrix.list)){
for (j in 1:length(matrix.list)){
print(dot.prod(matrix.list[[i]], matrix.list[[j]]))
}
}
Est-il possible de le faire en utilisant une fonction combinatoire dans R (comme Combn())? Je serais très reconnaissant pour toute suggestion.
Edit: la fonction elle-même n'a pas d'importance - je veux savoir comment utiliser des combinaisons d'éléments d'une liste comme entrées pour toute fonction R
Pourriez-vous donner un exemple reproductible (juste ajouter 'set.seed' au sommet) et le spectacle de la sortie désirée pour cet exemple? Il n'est pas tout à fait clair pour moi quelle structure vous voulez à la fin et quelle structure vous commencez avec. – lmo