R 如何找到数组中每个方阵的行列式?

R 如何找到数组中每个方阵的行列式?,r,R,我有一个747个方阵的数组。假设这个数组称为m。 用det(m[,1])给出了第一个方阵的行列式。同样地,det(m[,2])给出了第二个平方矩阵的行列式,依此类推。是否有计算数组中每个方阵行列式的函数?我尝试使用for循环,但它不起作用 您应该提供一个数据示例,但这里有一个简单的示例。在您的情况下,det.all将是一个包含747个决定因素的列表: m <- array(1:16, c(2, 2, 4)) det.all <- lapply(seq(dim(m)[3]), func

我有一个747个方阵的数组。假设这个数组称为m。
用det(m[,1])给出了第一个方阵的行列式。同样地,det(m[,2])给出了第二个平方矩阵的行列式,依此类推。是否有计算数组中每个方阵行列式的函数?我尝试使用for循环,但它不起作用

您应该提供一个数据示例,但这里有一个简单的示例。在您的情况下,
det.all
将是一个包含747个决定因素的列表:

m <- array(1:16, c(2, 2, 4))
det.all <- lapply(seq(dim(m)[3]), function(x) det(m[,,x]))
det.all
# [[1]]
# [1] -2
# 
# [[2]]
# [1] -2
# 
# [[3]]
# [1] -2
# 
# [[4]]
# [1] -2

m在三维上使用
应用
,如图所示:

a <- array((1:12)^2, c(2, 2, 3)) # test data

apply(a, 3, det)
[1]  -20 -164 -436

# verify that the above values are correct

det(a[,,1])
## [1] -20

det(a[,,2])
## [1] -164

det(a[,,3])
## [1] -436

a我以前尝试过,但收到错误消息:“if(d2==0L){:缺少需要TRUE/FALSE的值。”您可以从答案中给出的可复制示例中看出它是有效的。您需要提供一个可复制示例,允许任何其他人生成该错误,并且通常在发布时遵循标记页面顶部的说明。请使用
dput
添加数据,并显示相同的预期输出。请阅读他提供了一些信息,以及如何给出建议。