【问题标题】:Applying a function to sub-matrices within a larger matrix将函数应用于较大矩阵中的子矩阵
【发布时间】:2021-12-30 20:10:27
【问题描述】:

所以我有一个 1256 x 5 矩阵。

> head(retmatx12.30.3)
              AMT          HON            KO
[1,] -0.006673489 -0.001292867 -0.0033654493
[2,]  0.004447249  0.002848406  0.0082009877
[3,]  0.001789891  0.002754232 -0.0035886573
[4,] -0.003479321  0.002231823  0.0024011113
[5,] -0.006605786  0.015159190 -0.0002394852
[6,] -0.002375004 -0.008267790 -0.0100625938
              NEM         NVAX
[1,] -0.034023392 -0.023255737
[2,]  0.016436786  0.007936468
[3,]  0.009529404  0.031496102
[4,]  0.046052588  0.007633549
[5,] -0.031446425  0.037878788
[6,] -0.001694084  0.036496350

我想将我创建的函数应用到第 1-126 行,然后是 2-127 行,以此类推。该函数是一个矩阵代数块,它使用一个矩阵和几个向量。以某种方式将较大的矩阵分解为 1,131 126 x 5 个矩阵,并在每个矩阵上应用该函数(希望是一次)是否明智。或者,apply 的某种应用?

非常感谢任何帮助。谢谢

【问题讨论】:

    标签: r


    【解决方案1】:

    矩阵中的实际数字无关紧要,因此我将使用小得多的数据来演示一种方法,并使用一个简单的函数来演示滚动计算:

    m <- matrix(1:24, nrow=8)
    somefunc <- function(x) x %*% seq(ncol(x))
    wid <- 4 # 126
    
    somefunc(m[1:4,])
    #      [,1]
    # [1,]   70
    # [2,]   76
    # [3,]   82
    # [4,]   88
    
    somefunc(m[2:5,])
    #      [,1]
    # [1,]   76
    # [2,]   82
    # [3,]   88
    # [4,]   94
    

    实际轧制工作:

    lapply(seq(nrow(m) - wid + 1), function(i) somefunc(m[i - 1 + seq(wid),]))
    # [[1]]
    #      [,1]
    # [1,]   70
    # [2,]   76
    # [3,]   82
    # [4,]   88
    # [[2]]
    #      [,1]
    # [1,]   76
    # [2,]   82
    # [3,]   88
    # [4,]   94
    # [[3]]
    #      [,1]
    # [1,]   82
    # [2,]   88
    # [3,]   94
    # [4,]  100
    # [[4]]
    #      [,1]
    # [1,]   88
    # [2,]   94
    # [3,]  100
    # [4,]  106
    # [[5]]
    #      [,1]
    # [1,]   94
    # [2,]  100
    # [3,]  106
    # [4,]  112
    

    输出的第一个元素来自第 1-4 行、第 2-5 行、第 2-6 行等。

    【讨论】:

      猜你喜欢
      • 2021-06-20
      • 2012-12-03
      • 1970-01-01
      • 2013-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-23
      • 1970-01-01
      相关资源
      最近更新 更多