【发布时间】:2014-06-13 01:39:13
【问题描述】:
这是我在 R 中与多维数组战斗的又一步,上一个问题是here :)
我有一个具有以下维度的大 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],k 值使用sample(N, N, replace = T) 采样。
当然我想避免for 循环。我读过this,但我不知道如何对这个数组执行有效的索引,避免循环通过x 和y。
有什么想法吗?
更新:这里重要的是我希望第四(值)维度中的每个样本都有一个不同的样本,否则执行以下操作会很简单:
> dataSample = data[,,sample(N, N, replace = T), ]
【问题讨论】:
-
" for loops 比 *apply" 是一个都市传说。因此,您可能只想使用
for(j in 1:{value of N}) mean(data[,,j,])执行任何您希望添加到循环中的替换指令。 -
事实上我一直在寻找一个矢量化的解决方案,比如cran.r-project.org/doc/manuals/R-intro.html#Array-indexing
-
好的,我看看我能搞定什么。或者看看
vectorize()是否足够快。 -
我不知道
boot包在底层使用了什么,但您需要将估计定义为一个采用索引向量的函数。
标签: arrays r multidimensional-array