【问题标题】:Is it possible to do transpositions of big.matrix objects from the bigmemory package?是否可以从 bigmemory 包中对 big.matrix 对象进行转置?
【发布时间】:2015-06-02 15:44:48
【问题描述】:

我想执行一个非常大的 bigmemory big.matrix B 的转置,以便我可以计算 ABT 。这在大内存中可能吗?更重要的是,我怎样才能找到有关此的文档?在这篇关于 bigmemory http://www.stat.yale.edu/~mjk56/temp/bigmemory-vignette.pdf 的论文的第 5 页上,作者说该包还支持诸如 prod()、colmean()、colsd() 等操作,但我找不到这方面的文档。

【问题讨论】:

    标签: r r-bigmemory


    【解决方案1】:

    该文档在这一点上相当陈旧,并且正在迅速变得越来越老旧。我是 bigmemory 软件包的当前开发人员之一。我们已经开始对 bigmemory 包进行很多新的更新,以使其更加现代和易于使用。我们希望尽快向 CRAN 发布新的更新版本。

    也就是说,转置功能实际上是bigalgebra 包的一部分。目前,它正在大力开发中,我一直在努力扩展功能以包括更简单的功能,例如t。公平的警告,你很有可能会发现一两个错误。因此,在这里谈论太多可能是一个潜在的解决方案。

    安装我当前的开发分支bigalgebra

    library(devtools)
    # probably also install dev bigmemory
    # install_github("kaneplusplus/bigmemory")
    install_github('cdeterman/bigalgebra')
    

    这将为您提供big.matrix 对象的t 方法。

    library(bigalgebra)
    set.seed(123)
    bm <- as.big.matrix(matrix(rnorm(25), nrow=5))
    bm[]
                [,1]       [,2]       [,3]       [,4]       [,5]
    [1,] -0.56047565  1.7150650  1.2240818  1.7869131 -1.0678237
    [2,] -0.23017749  0.4609162  0.3598138  0.4978505 -0.2179749
    [3,]  1.55870831 -1.2650612  0.4007715 -1.9666172 -1.0260044
    [4,]  0.07050839 -0.6868529  0.1106827  0.7013559 -0.7288912
    [5,]  0.12928774 -0.4456620 -0.5558411 -0.4727914 -0.6250393
    
    t(bm)[]
               [,1]       [,2]       [,3]        [,4]       [,5]
    [1,] -0.5604756 -0.2301775  1.5587083  0.07050839  0.1292877
    [2,]  1.7150650  0.4609162 -1.2650612 -0.68685285 -0.4456620
    [3,]  1.2240818  0.3598138  0.4007715  0.11068272 -0.5558411
    [4,]  1.7869131  0.4978505 -1.9666172  0.70135590 -0.4727914
    [5,] -1.0678237 -0.2179749 -1.0260044 -0.72889123 -0.6250393
    

    一个后续点,你似乎对两个矩阵的tcrossprod特别感兴趣。我会牢记这一点,以便在 bigalgebra 包中创建相应的绑定。

    【讨论】:

    • 用于 big.matrix 的 tcrossprod 版本听起来很棒!
    • 还有一个相关的问题,你当前的主分支的元素矩阵乘法的状态是什么?我看到您已将它添加到 big.matrix 的 Arith 组通用。试用或仍处于试验阶段是否安全?
    • @andrew,逐元素乘法应该是可行的。我说一切都是实验性的,因为我正在努力设置后端以依赖 RcppArmadillo 来改进与备用 BLAS/LAPACK 库的接口。因此,许多后端代码偶尔会发生变化。你现在应该是安全的,因为不幸的是我最近没有太多时间投入到这件事上。
    • 至少对于当前版本的 bigalgebra,转置的正确语法是 t(bm[])
    猜你喜欢
    • 1970-01-01
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2015-09-18
    • 2014-09-19
    相关资源
    最近更新 更多