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

ここには 2 つの問題があります。まず、0*0入力に行列があり、それに対してエラーが返されます。eigen次に、 (最初のコマンドで) 関数を呼び出す方法が正しくありません。

基本的に、行列の次元が NOT であるかどうかを確認してから、関数を正しく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 に答える