【问题标题】:Partitioning a matrix into subgroup matrices将矩阵划分为子组矩阵
【发布时间】:2016-02-26 20:26:47
【问题描述】:

我有一个 240 X 2 矩阵,我的目标是将其划分为 40 组 6 X 2 矩阵并确定所有协方差矩阵的行列式。我已经用这段代码完成了任务。

  mat=matrix(0,240,2)
  m=numeric()
  n=0
  for ( i in 1:40) {
      m[i]=det(cov(mat[(n+1):(n+6),]))
      n=n+6
  }

有没有更好的方法来获得协方差矩阵和 40 个不同协方差矩阵的这些行列式?

【问题讨论】:

    标签: r matrix


    【解决方案1】:

    1)apply/array重塑成3维数组并使用apply:

    apply(array(mat, c(6, 40, 2)), 2, function(x) det(cov(x)))
    

    2) 滚动应用

    library(zoo)
    rollapply(mat, 6, by = 6, function(x) det(cov(x)), by.column = FALSE)
    

    3) 点按

    tapply(1:240, gl(40, 6), function(ix) det(cov(mat[ix, ])))
    

    4) 应用

    sapply(seq(1, 240, 6), function(i) det(cov(mat[i + 0:5, ])))
    

    5) 为

    m <- numeric(40)
    for(i in seq(1, 240, 6)) m[i] <- det(cov(mat[i + 0:5, ]))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-29
      • 1970-01-01
      • 1970-01-01
      • 2015-03-16
      • 2018-05-07
      • 2016-11-12
      相关资源
      最近更新 更多