通过R中的矩阵列表重复

通过R中的矩阵列表重复,r,matrix,determinants,R,Matrix,Determinants,我试图遍历一个矩阵列表matList来获取每个矩阵的行列式,并返回一个包含所有行列式值的新列表 到目前为止,我已经尝试过: matList detList <- list() for(i in matList){ detList <- c(det(matList[i])) i + 1 } detList 但是我得到了错误信息:error in use methoddeterminate: 没有适用于类列表对象的“行列式”方法 我知道我不能获取列表的行列式,但我对每个矩

我试图遍历一个矩阵列表matList来获取每个矩阵的行列式,并返回一个包含所有行列式值的新列表

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

matList

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

detList
但是我得到了错误信息:error in use methoddeterminate: 没有适用于类列表对象的“行列式”方法


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

我认为这是使用Lappy或sapply的教科书示例。做

detList <- lapply(matList, det)
工作

它在功能上等同于

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

正如@joran在评论中解释的那样,这将是正确的循环。

您不是在每个矩阵上调用它,而是在一个矩阵的长度列表上调用它。您需要matList[[i]]而不是单括号版本。此外,它仍然无法工作,因为您需要detList[i]很高兴我能提供帮助并欢迎使用stack overflow。如果你觉得问题被回答了,就把它当作答案吧。