[問題] For迴圈寫入matrix

作者: cwz1110 (麥克華斯基)   2020-04-22 11:07:07
[軟體熟悉度]:
入門
[問題敘述]:
我目前想要做出多組數據的sp^2來估計群體的總變異數,目前遇到的問題是如果單跑
sqrt((((D[3+(i*4500-4500),5])^2)+((D[4+(i*4500-4500),5])^2))/(k-1-(k/2-1)))
這行的話出來的sp^2值是正確的
但如果用i=5000,k=4500時的for迴圈做大量運算時sp^2就會跑掉
請問各位先進大大們有解法嗎,小弟被困住好多天了,謝謝各位大大
[程式範例]:
for(i in c(1:5000)){
for (k in seq(4,4500,by = 2)) {
D[4+i*4500-4500,6] <- sqrt((((D[3+(i*4500-4500),5])^2)+((D[4+(i*4500-4500),5])
^2))/(k-1-(k/2-1)))
}
}
作者: andrew43 (討厭有好心推文後刪文者)   2020-04-22 11:29:00
沒有迴圈的情況時i和k是什麼?有迴圈時是否有任何警告
作者: cwz1110 (麥克華斯基)   2020-04-22 11:34:00
沒回圈時i =1,k=4先算出第一組的sp^2,迴圈跑完後迴圈沒有任何警告
作者: andrew43 (討厭有好心推文後刪文者)   2020-04-22 11:58:00
猜測單純資料有毛病或是你的迴圈設計不如預期
作者: rebe212296 (綠豆冰)   2020-04-22 20:21:00
你k跟i維度沒有一樣會有問題,因為你的算式同時有ik還有D[3+(i*4500-4500),5]這裡3+(i*4500-4500)不能超D的列數
作者: cwz1110 (麥克華斯基)   2020-04-23 12:20:00
感謝a大&r大的回覆另回r大3+(i*4500-4500)沒超過D吧因爲我是5000*4500謝謝r大回覆!
作者: x05863a1   2020-04-24 21:53:00
j每次代數字你的D[4+i*4500-4500,6]這個元素就會被疊掉一次,所以你整個迴圈出來的結果會是每個i之下j=4500的結果,也就是前面j=4到4498的結果都沒有被傳出
作者: cwz1110 (麥克華斯基)   2020-04-25 19:06:00
謝謝x大回覆!我原本是用[k+i*4500-4500,6]只不過後來檢查發現他sp^2完全都算錯,所以才用[4+i*4500-4500,6]試跑單跑可以但疊上for loop之後就錯了,苦惱很久之後才來板上問各位大神

Links booklink

Contact Us: admin [ a t ] ucptt.com