我是R的新手,但我有一些Java经验。在Java中,我曾经在其他for循环中使用for循环进行编码,但是我注意到它在R中的工作方式不同。
p <- 11
diags <- list(rep(0.30, p), rep(0.45, p), rep(0.25, p))
Matrix <- as.matrix(bandSparse(p, k = -c(-1:1), diag = c(diags), symm=FALSE))
Matrix[1,1] <- 0.70
Matrix[11,11] <- 0.75
vector <- rep(0, 11)
vector[5] <- 1
vector
for(i in 1:240){
e <- vector %*% (Matrix %^% i)
for(j in 2:24){
cumulativeSum <- cumulativeSum + e[j]
}
}
我想在第一个for循环中完成每个矩阵乘法的第二个for循环。我尝试了几件没有我希望的结果的东西,我希望有人可以帮我解决这个问题。
答案 0 :(得分:2)
首先,据我所知,e
是1x11矩阵,因此使用索引2:24循环它是很奇怪的。
其次,由于它是数字上的一行,然后sum()
工作,不需要循环它。
for(i in 1:240){
e <- vector %*% (Matrix %^% i)
cumulativeSum <- cumulativeSum + sum(e)
}