作者cwz1110 (麥克華斯基)
看板R_Language
標題[問題] For迴圈寫入matrix
時間Wed Apr 22 11:07:07 2020
[軟體熟悉度]:
入門
[問題敘述]:
我目前想要做出多組數據的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)))
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.136.218 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/R_Language/M.1587524830.A.AA9.html
1F:→ andrew43: 沒有迴圈的情況時i和k是什麼?有迴圈時是否有任何警告 04/22 11:29
2F:→ cwz1110: 沒回圈時i =1,k=4先算出第一組的sp^2,迴圈跑完後迴圈沒 04/22 11:34
3F:→ cwz1110: 有任何警告 04/22 11:34
4F:推 andrew43: 猜測單純資料有毛病或是你的迴圈設計不如預期 04/22 11:58
5F:推 rebe212296: 你k跟i維度沒有一樣會有問題,因為你的算式同時有ik 04/22 20:21
6F:推 rebe212296: 還有D[3+(i*4500-4500),5]這裡3+(i*4500-4500)不能超D 04/22 20:30
7F:→ rebe212296: 的列數 04/22 20:30
8F:→ cwz1110: 感謝a大&r大的回覆 04/23 12:20
9F:→ cwz1110: 另回r大3+(i*4500-4500)沒超過D吧 04/23 12:20
10F:→ cwz1110: 因爲我是5000*4500 04/23 12:20
11F:→ cwz1110: 謝謝r大回覆! 04/23 12:20
12F:推 x05863a1: j每次代數字你的D[4+i*4500-4500,6]這個元素就會被疊掉 04/24 21:53
13F:→ x05863a1: 一次,所以你整個迴圈出來的結果會是每個i之下j=4500的 04/24 21:53
14F:→ x05863a1: 結果,也就是前面j=4到4498的結果都沒有被傳出 04/24 21:53
15F:→ cwz1110: 謝謝x大回覆!我原本是用[k+i*4500-4500,6]只不過後來檢 04/25 19:06
16F:→ cwz1110: 查發現他sp^2完全都算錯,所以才用[4+i*4500-4500,6]試跑 04/25 19:06
17F:→ cwz1110: 單跑可以但疊上for loop之後就錯了,苦惱很久之後才來板 04/25 19:07
18F:→ cwz1110: 上問各位大神 04/25 19:07