【问题标题】:generate all possible column combinations and create one matrix for each of them in R生成所有可能的列组合并在 R 中为它们中的每一个创建一个矩阵
【发布时间】:2013-02-02 09:11:17
【问题描述】:

我有一个这样的矩阵:

myarray=cov(matrix(rexp(200),50,10))

我想生成所有可能的列组合并计算每个组合的相关矩阵,如果可能的话,使用列号而不是名称。在第二步中,我想计算每个矩阵的行列式,所以也许有一种有效的方法来做到这一点。

【问题讨论】:

  • 但是,任何列组合都不会产生方阵.. ?
  • @Arun 其实我想计算相关矩阵,然后计算它的行​​列式
  • det(cor(myarray)) 是什么意思?
  • @Seth 这是整个矩阵的相关矩阵,但我想获取所有可能的矩阵组合,计算其相关矩阵,然后计算其行列式或特征值等。
  • 所有可能的组合意味着会有成对和两个以上的组合,在我的例子中有10列。

标签: r


【解决方案1】:

这是一种方法:

list.of.matrices <- apply(expand.grid(rep(list(c(FALSE, TRUE)), ncol(myarray))),
                          1, function(j)myarray[, j, drop = FALSE])

length(list.of.matrices)
# [1] 1024

然后执行以下操作:

result <- sapply(list.of.matrices, function_of_your_choice)

但请注意,det 只能应用于方阵...请澄清。

【讨论】:

  • 有什么方法可以将 do.call 和 sapply 混合使用,这样我就可以在使用 sapply 计算行列式之前构造平方矩阵了吗?
猜你喜欢
  • 1970-01-01
  • 2018-08-01
  • 2015-03-01
  • 2018-09-07
  • 1970-01-01
  • 2015-06-30
  • 2014-10-27
  • 1970-01-01
  • 2017-03-13
相关资源
最近更新 更多