2013-10-09 5 views
0

У меня есть топленая матрица A:Преобразование расплавленной матрицы к матрице в R

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

Я хочу, чтобы преобразовать его в матрицу B:

B: 
1 0 0 
0 1 0 
0 0 1 

Этой матрица является симметричной.

Мы можем легко расплавить матрицу, используя пакет «reshape». Как мы можем сделать это обратно?

Легко использовать цикл for, но он слишком медленный.

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

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

Ваша трехколоночная матрица, а не «трехканал data.frame», но я думаю, вы найдете ответ там или по одному из вопросов, связанных с правой стороны этого вопроса. – Frank

ответ

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

Мы не нуждаемся ни в steenkin' петля здесь.

Смежные вопросы