2015-10-01 3 views
0

Я пытаюсь сделать свою матрицу (tc) симметричной (используя R), добавив соответствующие записи и разделив их на сумму соответствующих диагональных записей (tc [i, j] + дц [J, I])/(дц [I, I] + дц [J, J]). Я пробовал это с помощью циклов, но это не дает мне правильных значений, не говоря уже о том, чтобы сделать матрицу симметричной. Это мой код до сих пор:Изменение записей в матрице с использованием записей матрицы

for (i in 1:end){ 
     for(j in 1:end){ 
     tc[i,j]<-(tc[i,j]+tc[j,i])/(tc[i,i]+tc[j,j]) 
     } 
    } 

Это, вероятно, очень очевидная ошибка, но я не могу понять это. Может кто-нибудь мне помочь? =)

+1

Просьба представить воспроизводимый пример –

+0

Что такое tc? вы можете использовать команду dput на нем? –

ответ

0

Ну, если вы думаете об этом, вы суммируете значения, которые вы уже обновили (поскольку вы перебираете все i и j).

Что делать, если вы создаете новую матрицу с теми же размерами, что и tc, а затем запустите свой цикл.

newTc <- matrix(0, nrow=nrow(tc), ncol=ncol(tc)) 
for (i in 1:end){ 
    for(j in 1:end){ 
    newTc[i,j]<-(tc[i,j]+tc[j,i])/(tc[i,i]+tc[j,j]) 
    } 
} 
+0

Я действительно сделал это сегодня утром, и ваше объяснение имеет такой смысл. Я вообще не думал об этом, но, конечно, ты совершенно прав! Спасибо! – Linalein

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