Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
Créer une liste de matrices
3 participants
Page 1 sur 1
Créer une liste de matrices
Bonjour,
Je suis en train d'essayer de créer une liste de matrices automatique.
Il y a ce code manuel qui est utilisable :
Mais j'aimerais automatiser ce code pour créer 100 matrices les unes après les autres dans mon objet "a" sans avoir à écrire manuellement matrix(,3,3) 100 fois.
Quelqu'un aurait-il une idée ?
En vous remerciant d'avance.
Je suis en train d'essayer de créer une liste de matrices automatique.
Il y a ce code manuel qui est utilisable :
- Code:
a=list(matrix(,3,3),matrix(,3,3)),matrix(,3,3))
#Qui permet de créer une liste de 3 matrices les unes après les autres
Mais j'aimerais automatiser ce code pour créer 100 matrices les unes après les autres dans mon objet "a" sans avoir à écrire manuellement matrix(,3,3) 100 fois.
Quelqu'un aurait-il une idée ?
En vous remerciant d'avance.
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
Re: Créer une liste de matrices
A la fin de la doc on-line de list, il y a l'exemple suivant, qui passe par la création d'un nouvel environnement:
HTH, Eric.
- Code:
e1 <- new.env()
e1$a <- 10
e1$b <- 20
as.list(e1)
HTH, Eric.
Eric Wajnberg- Nombre de messages : 1238
Date d'inscription : 14/09/2012
Re: Créer une liste de matrices
Bonjour, le code que tu as écrit m'a inspiré.
Ce code permet au final de réaliser automatiquement une liste de matrices (tout simple au final) :
Bon il est temps que je me remette sur R
Merci
Ce code permet au final de réaliser automatiquement une liste de matrices (tout simple au final) :
- Code:
for(i in 1:100){
a[[i]]=matrix(,3,3)
}
Bon il est temps que je me remette sur R
Merci
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
Re: Créer une liste de matrices
Bonjour,
Une liste de matrix carrées c'est surtout un array...Mois lourd à manipuler qu'une liste.
Donc
Sauf bien sûr si tu veux absolument une liste comme type d'ojet.
Nik
Une liste de matrix carrées c'est surtout un array...Mois lourd à manipuler qu'une liste.
Donc
- Code:
array(dim=c(3,3,100))
Sauf bien sûr si tu veux absolument une liste comme type d'ojet.
Nik
Nik- Nombre de messages : 1606
Date d'inscription : 23/05/2008
Re: Créer une liste de matrices
Merci, très intéressant ce code, je ne le connaissais pas.
Au final on obtient une liste de matrices avec ce code mais est-il possible d'avoir une liste de liste de matrices avec les "array" ?
Chose qui est possible avec les listes pour ce code
Mais si ça prend moins de place et que c'est moins volumineux, je suis complètement pour l'array.
Au final on obtient une liste de matrices avec ce code mais est-il possible d'avoir une liste de liste de matrices avec les "array" ?
Chose qui est possible avec les listes pour ce code
- Code:
a=NULL;b=NULL
for(i in 1:3){
a[[i]]=matrix(c("D","I","X","L","A","P","I","N","S"),3,3)
b[[i]]=matrix(,3,3)
}
c=list(a,b);c
Mais si ça prend moins de place et que c'est moins volumineux, je suis complètement pour l'array.
Dernière édition par zezima le Ven 7 Avr 2017 - 10:53, édité 1 fois
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
Re: Créer une liste de matrices
Oui un array est à n dimensions. En 3D, c'est facile à se représenter les choses et du coup à choisir les dimensions à afficher pour retrouver sa matrice comme on la veut. Avec 4 dimensions ou plus c'est plus compliqué mais avec un peu de pratique on s'y fait très bien.
Tant que tes matrices à stocker sont des matrices carrées, tu as tout intérêt à utiliser un array quitte a le transformer en list via une fonction du type alply {plyr}.
En termes de place et d'efficacité de calcul, c'est comme utiliser un objet de type matrix à la place d'un data.frame car on est tout simplement dans la généralisation de ce cas à 3 dimensions ou plus.
Nik
Tant que tes matrices à stocker sont des matrices carrées, tu as tout intérêt à utiliser un array quitte a le transformer en list via une fonction du type alply {plyr}.
En termes de place et d'efficacité de calcul, c'est comme utiliser un objet de type matrix à la place d'un data.frame car on est tout simplement dans la généralisation de ce cas à 3 dimensions ou plus.
Nik
Nik- Nombre de messages : 1606
Date d'inscription : 23/05/2008
Re: Créer une liste de matrices
Il faut que j'ajoute un truc, par contre, un array c'est uniforme. Donc dès lors que tu as du character et du numeric en termes d'objet, tu es obligé de passer par le type list.
Nik- Nombre de messages : 1606
Date d'inscription : 23/05/2008
Re: Créer une liste de matrices
Bonjour Nik et merci pour tes conseils.
Tu penses donc que c'est plus avantageux de faire une liste de plusieurs array plutôt qu'une liste de liste de matrices ?
Ce code serait plus optimal que le précédent que j'ai montré ?
Merci
Tu penses donc que c'est plus avantageux de faire une liste de plusieurs array plutôt qu'une liste de liste de matrices ?
Ce code serait plus optimal que le précédent que j'ai montré ?
- Code:
c=NULL
for(i in 1:2){
c[[i]]=array(dim=c(2,2,3))
}
u
Merci
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
Re: Créer une liste de matrices
Si tu veux rentrer des natures de données différentes (character et numric par exemple), ça peut être un bon compromis. Tout dépend de ce que tu dois faire comme calcul.
Les listes c'est lourd en termes de calcul. Et ce, d'autant plus que tu augmente le nombre de niveau dans la liste.
Les listes c'est lourd en termes de calcul. Et ce, d'autant plus que tu augmente le nombre de niveau dans la liste.
Nik- Nombre de messages : 1606
Date d'inscription : 23/05/2008
Re: Créer une liste de matrices
Merci,
D'accord donc il est possible de créer un array d'array ?
Je n'ai que des données numériques donc je peux en effet me passer de listes.
Mon seul but est d'avoir quelquechose qui ressemble à "une liste de plusieurs listes de matrices".
Et c'est justement à ce niveau-là que je ne sais pas comment faire pour translater l'équivalent de mon code sous format array. (au final avoir un array d'array)
Pensez-vous que c'est en pratique possible sous R ?
D'accord donc il est possible de créer un array d'array ?
Je n'ai que des données numériques donc je peux en effet me passer de listes.
Mon seul but est d'avoir quelquechose qui ressemble à "une liste de plusieurs listes de matrices".
Et c'est justement à ce niveau-là que je ne sais pas comment faire pour translater l'équivalent de mon code sous format array. (au final avoir un array d'array)
Pensez-vous que c'est en pratique possible sous R ?
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
Re: Créer une liste de matrices
Par exemple :
La 4e dimension, répète donc ce volume (3,3,100), n fois (10 fois dans l'exemple). Tu reproduis donc bien exactement ta liste d'array Et tu peux ajouter autant de dimensions que tu veux.
Pour reprendre ton vocabulaire, une matrice est déjà un array d'array puisqu'un vecteur est un array à 1 dimension. un array de matrices est un cube (empilement de matrices). Un array de cubes est un hypercube etc...etc...
En outre, la classe array permet d'extraire les données en croisant toutes les dimensions que tu veux. Ce n'est pas le cas avec une liste ou les éléments d'une liste ne peuvent pas toujours être extraits facilement dans la configuration que tu veux.
J'espère que je suis clair.
Nik
- Code:
listarray <- array(dim=c(3,3,100,10))
La 4e dimension, répète donc ce volume (3,3,100), n fois (10 fois dans l'exemple). Tu reproduis donc bien exactement ta liste d'array Et tu peux ajouter autant de dimensions que tu veux.
Pour reprendre ton vocabulaire, une matrice est déjà un array d'array puisqu'un vecteur est un array à 1 dimension. un array de matrices est un cube (empilement de matrices). Un array de cubes est un hypercube etc...etc...
En outre, la classe array permet d'extraire les données en croisant toutes les dimensions que tu veux. Ce n'est pas le cas avec une liste ou les éléments d'une liste ne peuvent pas toujours être extraits facilement dans la configuration que tu veux.
J'espère que je suis clair.
Nik
Nik- Nombre de messages : 1606
Date d'inscription : 23/05/2008
Re: Créer une liste de matrices
Merci énormément, c'est très clair !
Je viens de percuter comment fonctionnait le code, c'est extrêmement puissant.
Plus rapide au niveau du code et optimisé au niveau de l'espace de stockage (si j'ai bien compris).
Merci, c'est exactement ce dont j'avais besoin, ça va être très utile pour les simulations.
Je viens de percuter comment fonctionnait le code, c'est extrêmement puissant.
Plus rapide au niveau du code et optimisé au niveau de l'espace de stockage (si j'ai bien compris).
Merci, c'est exactement ce dont j'avais besoin, ça va être très utile pour les simulations.
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
Sujets similaires
» AFC => décomposition en matrices de rang 1
» Logiciel R : exporter des matrices d'une boucle for
» Créer une fonction R
» creer une carte
» Créer un répertoire
» Logiciel R : exporter des matrices d'une boucle for
» Créer une fonction R
» creer une carte
» Créer un répertoire
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum