作者wertymin24 (werty)
看板Statistics
标题[情报] R的运算速度问题
时间Thu Apr 7 18:23:55 2011
http://lookingatdata.blogspot.com/2011/04/speeding-up-r-computations.html
这是别人的网志
主要是讨论他在弄模拟时,发现一些可以改进速度的方法
e.g. () => {}
a^2 => a*a
mean(x) => sum(x)/length(x)
大家可以看看
因为小弟的实验有一两百笔资料就要偷笑了
所以没有太深入的研究。
另外,我还是想问回圈问题 (对不起...我比较笨)
http://0rz.tw/QD7KB
我在这里看到的范例,回圈後面有写好i的位置
但是在正文里面那个人去测速度时,用的回圈
x<-rnorm(50)
system.time(for(i in 1:100000){mean(x)})
user system elapsed
1.522 0.000 1.523
我不懂为什麽R会知道写程式的人要他重覆100000次?
麻烦知道的人可以开示一下~
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.82.37
1F:→ gsuper:後面那个问题我看不懂 , 你是不懂for的定义吗? 04/07 19:40
2F:→ gsuper:不然看起来不就是测一下跑十万次mean()要花多久时间吗? 04/07 19:41
3F:→ gsuper:喔 我看懂了 ?system.time(expr) , 那个expr就是放一段程式 04/07 19:43
4F:→ obarisk:mean会排除NA,所以会比较慢吧 04/07 20:13
5F:→ wertymin24:回一楼,没错,我是不懂为什麽for可以这样子写 04/07 20:24
6F:→ wertymin24:因为{}并没有i为什麽会知道要100000次? 04/07 20:24
7F:→ obarisk:只是做很多次,让时间的距离出来 04/07 20:25
8F:→ obarisk:重点不在for里面的内容 04/07 20:26
9F:→ obarisk:我发现下面的回文都说光了... 04/07 20:28
10F:→ obarisk:比较有趣的是我做a^6比a*a*a*a*a*a还快 04/07 20:29
11F:→ gsuper:{}里面没有i就是跑100000次阿 , {}里面不一定要有i 04/07 21:20
12F:→ gsuper:因为R已经自动省略i++了,但若是写i=i+1也没差,R会自己判断 04/07 21:24
13F:→ obarisk:R是用i++吗? 不是从[]中的第一个开始到最後一个? 04/07 21:38
14F:→ obarisk:for(i in c(1,2,5,4,4,4)){cat(i,"\n")} 04/07 21:39
15F:推 gsuper:原来如此 , 那我误解很久了 XD 04/07 21:53
16F:→ obarisk:不过如果用 04/07 23:55
17F:→ obarisk:for(i in 1:10){}cat(i,"\n")也很有趣 04/07 23:56