2

我已经尝试了许多不同的方法来仅在遍历列表时获取特征值但没有工作。那是代码:

myarray=matrix(rexp(200),50,5)
list.of.matrices <- apply(expand.grid(rep(list(c(FALSE, TRUE)), ncol(myarray))),
                              1, function(j)myarray[, j, drop = FALSE])
list.of.cov.matrices=sapply(list.of.matrices, cov)
eigen.val<- sapply(list.of.cov.matrices, eigen$values)

也试过:

eigen.val=apply(list.of.cov.matrices, 1, function(eigen) FUN(eigen, only.values = T))

最后,我想用每个矩阵的特征值构建一个表。

要构建我使用的表:

eigen.sum=data.frame(
  list.eigen.of.cor.matrices=rep(1:length( eigen.val), sapply( eigen.val, length)),
  y=unlist( eigen.val)

这可以完成表格,但随后必须在 excel 中进行额外的操作,因此如果可能的话,希望直接进行。

4

1 回答 1

2

这里有两个问题。首先,您0*0的输入中有一个矩阵,它会返回一个错误。其次,您调用eigen函数的方式(在第一个命令中)不正确。

基本上,您必须检查矩阵的维数是否不正确0*0,然后eigen正确调用该函数。试试这个:

eigen <- sapply(list.of.cov.matrices, function(x) {
    if (prod(dim(x)) > 0) {
        eigen(x)$values
    }
})
于 2013-02-03T09:58:06.333 回答