Bonjour,

J'ai un vecteur x de longueur n dont les composantes sont des chaînes de caractère, et je souhaiterais créer une matrice mat de taille n x n telle que :

mat[i,j] =1 si x[i]==x[n]
et 0 sinon

Donc une matrice symétrique. J'ai décidé de ne remplir que la partie inférieure.
J'utilise le package Matrix, comme la matrice aura beaucoup de 0.

Voici le code que j'ai fait pour le moment :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
mat <- Matrix(0,nrow=length(x),ncol=length(x))
 
for (i in 1:length(x)){
  for (j in 1:length(x)){
    if (i>j)
    {
      mat[i,j] <- x[i]==x[j]
    }
  }
}
Je compte le faire pour plusieurs vecteurs x, et le souci est que n peut être très grand (entre 10 000 et 50 000). J'aimerais donc savoir s'il était possible d'optimiser ce code, ou s'il y avait un autre moyen de remplir la matrice sans boucle ?

Merci de votre aide !