作者gsuper (统计的巴比伦塔)
看板Statistics
标题[程式] R的回圈
时间Wed Feb 10 01:01:05 2010
[软体程式类别]: R
[程式问题]: 计算速度
[软体熟悉度]: 中(3个月到1年)
[问题叙述]:
请问一下
R的回圈很慢这个缺点
有没有什麽好方法可以克服?
我知道用 x[ 1:54575 , ]
再配上矩阵专用的 row or col function 可以算很快
但是每次都要避免使用回圈实在是很痛苦也很不灵活
常常写了回圈
然後跑了老半天在等的时候
才想出比较快的写法
请问有什麽帮回圈加速的办法吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.177.165
※ 编辑: gsuper 来自: 140.113.177.165 (02/10 01:01)
※ 编辑: gsuper 来自: 140.113.177.165 (02/10 01:03)
※ 编辑: gsuper 来自: 140.113.177.165 (02/10 01:04)
1F:推 west1996:似乎是天然缺陷,只能尽量避免用多层回圈? 02/10 01:10
2F:→ andrew43:有一些简单的概念, 这记忆体的使用及 IO 有关 02/10 01:21
3F:→ andrew43:不过直译式语言本来就容易有这个问题, 多少都要避免. 02/10 01:22
4F:推 wlsherica:少写几层回圈? 02/10 01:27
5F:→ ADORIAN:回圈交给 C 来做.. 02/10 12:40
6F:→ ADORIAN:R call C 在 linux 下很方便 02/10 12:42
7F:→ ADORIAN:www.sfu.ca/~sblay/R-C-interface.ppt 02/10 12:45
不好意思
这投影片应该已经是很新手取向了
不过我还是没办法直觉的使用
可否举个例子给我看?
比方说
手上有个 50000 * 10 的矩阵
目的是要算 rowmeans
回圈写法 (约10分钟)
meanVector <- as.vector(NULL)
i=1
for(i in 1:50000)
{
meanVector <- c( meanVector , mean(x[i,]) )
}
x <- cbind (x,meanVector)
rm(i,meanVector)
这样要怎麽用投影片的 function 去转阿?
###### 我知道 rowMeans() 这个 function ######
###### 这里只是举例 , 0rz ######
※ 编辑: gsuper 来自: 140.113.239.247 (03/01 20:48)
※ 编辑: gsuper 来自: 140.113.239.247 (03/01 20:49)