Créer une matrice via une boucle

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Stéphane Pelletier
Messages : 16
Enregistré le : 04 Déc 2017, 06:28

Créer une matrice via une boucle

Messagepar Stéphane Pelletier » 09 Juin 2018, 17:50

Bonjour,

Cela fait plusieurs jours (voir semaines) que je n'arrive pas à regler mon problème.

Dans un premier temps, j'ai dans une fonction, une partie de mon code qui va créer des vecteurs :

Code : Tout sélectionner

for (i in cond){
for (j in x){
mat4=matrix(assign(pos=1,paste(j,i,rq,sep=""),mate2[,j][grep(pattern=i,rownames(mate2))]),byrow=F,ncol=length(unique(name)[grep(pattern=i,unique(name))]))
print(mat4)
}
}
 


Cette partie de code fonctionne normalement: mes vecteurs sont bien crée et lorsque j'appelle la fonction, "print(mat4)" affiche bien le nombre de matrice "mat4" voulu (pour chaque matrice, 1 ligne et 6 colonnes correspondant au vecteur créer).

Maintenant je souhaite compléter le code de manière à mettre ces matrice "mat4" dans une seule et même matrice :

Code : Tout sélectionner

reslt<-matrix(ncol=6,nrow=4)#création d'une matrice vide
colnames(reslt)<-0:5
rownames(reslt)<-apply(expand.grid(x, cond, rq), 1, paste, collapse = "")
for (i in cond){
for (j in x){
for (n in rownames(reslt)){
mat4=matrix(assign(pos=1,paste(j,i,rq,sep=""),mate2[,j][grep(pattern=i,rownames(mate2))]),byrow=F,ncol=length(unique(name)[grep(pattern=i,unique(name))]))
reslt[n,]<-mat4
}
}
}
print(reslt)
}


Le code marche, le problème et qu'il ne tient compte que de la dernière matrice "mat4" créer. Je ne comprend pas bien, puisque la matrice vide et en dehors de la boucle, en théorie elle devrait se remplir au fur et a mesure?
Si quelqu'un a une solution (de préference en restant avec la distri de bases de R, mais je suis ouvert à toutes suggestion).

Merci.

Stéphane

Stéphane Pelletier
Messages : 16
Enregistré le : 04 Déc 2017, 06:28

Re: Créer une matrice via une boucle

Messagepar Stéphane Pelletier » 10 Juin 2018, 16:33

J'ai résolu mon problème.
Pour ceux qui serait dans le même cas, le nom des lignes (dans mon cas) doivent être les mêmes entre les matrices "mat4" et "reslt" (en tout cas, ça marche maintenant, un truc tout bête :) ) !!

Bonne soirée.

Stéphane


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité