[问题] 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