Je me demandais s'il y a un moyen rapide d'initialiser une liste de matrices dans R. Par exemple, je recherche un (une doublure) pour reproduire les mêmes résultats que les éléments suivants:
output_array = list()
for(i in 1:10){
output_array[i] = diag(2)
}
5 Réponses :
ESSAYEZ
lapply(1:10, diag, 2)
Essayez également ce wrapper de * Appliquer:
replicate(10, diag(2), simplify=F)
Vous voulez certainement simplifier = false code> là-bas.
Cette doublure doit fonctionner si vous voulez que le contenu des matrices varie, alors quelque chose comme p> sera plus approprié. Le contenu de la fonction anonyme sera évidemment un peu plus utile que mon exemple, mais le principe est le même p> p>
Vous pouvez utiliser un tableau:
h <- array(1:2, c(2,2,10))
h[,,2] ####
[,1] [,2]
[1,] 1 1
[2,] 2 2
Les deux répliquées et les représentants ont été recommandés. FYI: La différence est l'évaluation de l'expression étant adoptée. "REP 'évalue ses arguments comme entrée, alors que" Repliquer "les évalue à l'intérieur de la" boucle ".
Vous pouvez la voir avec des nombres aléatoires. Avec Replicat, les numéros sont différents car l'expression 'diag (RNorm (2))' est évaluée plusieurs fois, alors que avec REP, il n'est évalué qu'une seule fois et la valeur est répétée. P>
Rep (Liste (Diag (RNorm (2))), 2) P> blockQuote>
[[1]] p>
[,1] [,2]