2014-04-17 38 views
0

这的快速索引是我与战斗中的R多维数组又迈进了一步,先前的问题是here :)智能和多维数组有R

我有以下尺寸的大R数组:

> data = array(..., dim = c(x, y, N, value)) 

我想执行与获得一种引导比较平均(见here了一个关于它的讨论):

> vmean = apply(data, c(1,2,3), mean) 

随着取代N值随机取代的平均值,以更好地解释如果data[1,1,,1]等于[v1 v2 v3 ... vN]我想用[v_k1 v_k2 v_k3 ... v_kN]之类的东西替换它采用sample(N, N, replace = T)采样的k值。

当然我想避免for循环。我读过this,但我不知道如何执行此数组的有效索引,避免通过xy循环。

任何想法?

UPDATE:这里最重要的是,我想在第四(值)维每个样本不同的样本,否则这将是简单的做一些事情,如:

> dataSample = data[,,sample(N, N, replace = T), ] 
+0

“for loops比* apply更糟糕”是城市的传奇。所以你可能只想用'for(j in 1:{value of N})mean(data [,, j,])''当然有你想要的任何类型的替换指令添加到循环中。 –

+0

事实上,我正在寻找矢量化的解决方案,像http://cran.r-project.org/doc/manuals/R-intro.html#Array-indexing –

+1

好吧,我会看看我可以喝什么。或者看看'vectorize()'是否足够快。 –

回答

0

而且还有的编译器包,通过使用Just In Time编译器加速循环。 在代码顶部添加行可以使编译器为所有代码。

require("compiler") 
compilePKGS(enable=T) 
enableJIT(3) 
setCompilerOptions(suppressAll=T)