【问题标题】:Smart and Fast Indexing of multi-dimensional array with R使用 R 对多维数组进行智能快速索引
【发布时间】: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,但我不知道如何对这个数组执行有效的索引,避免循环通过xy

有什么想法吗?

更新:这里重要的是我希望第四(值)维度中的每个样本都有一个不同的样本,否则执行以下操作会很简单:

> 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


【解决方案1】:

还有一个编译器包,它通过使用即时编译器来加速 for 循环。 在代码顶部添加这些行可以启用所有代码的编译器。

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

【讨论】:

    猜你喜欢
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    • 2015-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    相关资源
    最近更新 更多