我尝试了许多不同的东西,只有在循环列表但没有工作时才能获得特征值。这就是代码:
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中的其他操作,所以如果可能的话,请直接进行。
答案 0 :(得分:2)
这里有两个问题。首先,输入中有一个0*0
矩阵,它会返回错误。其次,调用eigen
函数(在第一个命令中)的方式不正确。
基本上,您必须检查矩阵的维度是否为0*0
,然后正确调用eigen
函数。试试这个:
eigen <- sapply(list.of.cov.matrices, function(x) {
if (prod(dim(x)) > 0) {
eigen(x)$values
}
})