在R中创建矩阵列表

时间:2018-02-18 16:47:56

标签: r finance

> fact.cov <- matrix(NA,ncol(fact.weight),ncol(fact.weight))

> for (row in 15:nrow(fact.weight)) {
    >> fact.cov[[row]] <- var(fact.wealth.return[(row-1):row,])
}

当我运行此代码时,我收到以下错误消息:

Error in fact.cov[[row]] <- var(fact.wealth.return[(row - 1):row, ]) : 
  more elements supplied than there are to replace

对于每个时间点(行),我需要创建一个协方差矩阵。有人知道怎么做吗?

提前谢谢!

2 个答案:

答案 0 :(得分:0)

这可能会有所帮助:

fact.cov <- list()
for (k in 15:fact.weight) {
 fact.cov[[k]] <- var(fact.wealth.return[(k-1):k,])
 rm(k)
}

但是,您应该提供更多详细信息,以便您的代码可以重现(例如fact.wealth.returnfact.weight)。

答案 1 :(得分:0)

在不了解您的数据的情况下,很难说您究竟想要完成什么。但是您可以轻松地创建一个空列表,然后为每个列表元素分配一个矩阵,从而获得一个矩阵列表。我鼓励创建一个确定大小的空列表,因为这通常是更好地使用内存并且可以更快。

listOfMatrices <- vector("list", 10)
for (i in 1:10) {
  listOfMatrices[[i]] <- matrix(NA, nrow=2, ncol=3)
}

此输出将是一个长度为10的列表,此列表的每个元素都将是一个包含2行和3列的矩阵。每个矩阵将由NA s填充。