【问题标题】:Reiterating through a list of matrices in R重复 R 中的矩阵列表
【发布时间】:2019-07-19 08:02:43
【问题描述】:

我正在尝试通过矩阵列表 (matList) 来获取每个矩阵的行列式,并返回所有行列式值的新列表。

到目前为止,我已经尝试过:

matList

detList <- list()
for(i in matList){
  detList <- c(det(matList[i]))
  i + 1 
}

detList

但我收到错误消息: UseMethod("determinant") 中的错误: 没有适用于“行列式”的方法应用于“列表”类的对象

我知道我无法获取列表的行列式,但我为每个矩阵调用了该函数,所以我不确定为什么会收到此错误消息或如何修复它。

【问题讨论】:

  • 您不是在每个矩阵上调用它,而是在矩阵长度为一个的列表上调用它。你想要matList[[i]] 而不是单括号版本。此外,它仍然无法工作,因为您需要detList[i] &lt;- ...,而手动增加i 会严重破坏您的循环;永远不要在 for 循环中修改循环变量。

标签: r matrix determinants


【解决方案1】:

我认为这是使用lapply(或sapply)的教科书示例。有没有

detList <- lapply(matList, det)

工作?

在功能上等价于

detList <- list()
for (i in matList){
  detList[i] <- det(matList[[i]])
}

这将是@joran 在 cmets 中解释的正确循环。

【讨论】:

  • 很高兴我能帮助并欢迎堆栈溢出。如果您认为问题已得到解答,请考虑接受它作为答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-09
  • 2014-01-26
  • 2015-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多