7
votes

Initialiser une liste de matrices dans r

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)
}


0 commentaires

5 Réponses :


2
votes

ESSAYEZ

lapply(1:10, diag, 2)


0 commentaires

11
votes

Essayez également ce wrapper de * Appliquer:

replicate(10, diag(2), simplify=F)


1 commentaires

Vous voulez certainement simplifier = false là-bas.



5
votes

Cette doublure doit fonctionner xxx

si vous voulez que le contenu des matrices varie, alors quelque chose comme xxx

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


0 commentaires

0
votes

Vous pouvez utiliser un tableau:

 h <- array(1:2, c(2,2,10))

h[,,2]        ####
     [,1] [,2]
[1,]    1    1
[2,]    2    2


0 commentaires

3
votes

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]


0 commentaires