J'ai actuellement une boucle - en fait une boucle dans une boucle, dans un modèle de simulation qui devient lent avec un grand nombre d'individus. J'ai vectorisé la majeure partie de la boucle et l'ai rendue beaucoup plus rapide. Mais il y a une partie où j'assigne plusieurs éléments d'une liste comme étant la même chose, simplifiant une grande boucle à la seule tâche que je veux accomplir :
new.matrices[[length(new.matrices)+1]]<-old.matrix
À chaque itération de la boucle, la ligne ci-dessus est appelée, et le même objet matriciel est affecté au nouvel élément suivant d'une liste.
J'essaie de vectoriser cela - si possible, ou de le rendre plus rapide qu'une boucle ou une instruction apply.
Jusqu'à présent, j'ai essayé des trucs du genre :
indices <- seq(from = length(new.matrices) + 1, to = length(new.matrices) + reps)
new.matrices[indices] <- old.matrix
Cependant, le résultat est le message suivant :
Warning message:
In new.effectors[effectorlength] <- matrix :
number of items to replace is not a multiple of replacement length
Il essaie également d'attribuer une valeur de l'élément old.matrix
à un élément de new.matrices
comme ça :
[[1]]
[1] 8687
[[2]]
[1] 1
[[3]]
[1] 5486
[[4]]
[1] 0
Lorsque le résultat souhaité est un élément de liste = une matrice entière, une copie de old.matrix
Existe-t-il un moyen de vectoriser le collage d'une matrice en éléments de liste sans boucles ? Avec les boucles telles qu'elles sont actuellement implémentées, nous parlons de plusieurs milliers de répétitions qui ralentissent considérablement les choses, d'où mon désir de vectoriser cela si possible.