2013-10-09 4 views
0

J'ai une matrice fondue A:Convertir une matrice fondue à une matrice en R

A = 
1 1 1 
2 1 0 
2 2 1 
3 1 0 
3 2 0 
3 3 1 

Je veux le convertir en une matrice B:

B: 
1 0 0 
0 1 0 
0 0 1 

Cette matrice est symétrique.

Nous pouvons facilement fondre une matrice en utilisant le paquet 'reshape'. Comment pouvons-nous faire cela inversement?

Il est facile d'utiliser une boucle for, mais elle est trop lente.

B <- matrix(0,nrow=3,ncol=3) 

for(i in 1:nrow(A)) 
{ 
    B[A[i,1],A[i,2]] = A[i,3] 
} 
+0

Votre matrice est à trois colonnes, pas une "donnée à trois colonnes", mais je pense que vous trouverez une réponse là ou sur l'une des questions liées du côté droit de cette question. – Frank

Répondre

0
B <- matrix(0,nrow=3,ncol=3) 
B[ A[, 1:2] ] <- A[,3] 

Nous ne avons pas besoin steenkin' boucles ici.

Questions connexes