我正在尝试创建一个for循环来更新矩阵以进行迭代,但我希望它每隔5次迭代就做一些不同的事情。如何在不制作多个if语句的情况下实现此目的。基本上,我如何简化包含仅适用于每5次迭代的for循环。
这是我的代码:
NCols=5
NRows=5
mymat<-matrix(runif(NCols*NRows), ncol=NCols)
matlist <- list()
matlist[[1]] <- mymat
days <- 50
for (i in 2:days){
matlist[[i]] <- matlist[[i-1]]*2
if (i == 5){
matlist[[i]][2,2] <- matlist[[i]][2,2]+1
}
}
答案 0 :(得分:1)
您可以将if
语句写为:每当i除以5的余数等于0时。
代码中if (i %% 5 == 0)
代替if (i == 5)
即可。
答案 1 :(得分:0)
你的循环似乎从2开始,所以第一次第五次迭代将是i = 6.So,基于代码将是: -
NCols=5
NRows=5
mymat<-matrix(runif(NCols*NRows), ncol=NCols)
matlist <- list()
matlist[[1]] <- mymat
days <- 50
for (i in 2:days){
matlist[[i]] <- matlist[[i-1]]*2
if (i-1 %% 5 == 0){
matlist[[i]][2,2] <- matlist[[i]][2,2]+1
}
}
但如果你想要i = 5,10,15 .... n那么: -
NCols=5
NRows=5
mymat<-matrix(runif(NCols*NRows), ncol=NCols)
matlist <- list()
matlist[[1]] <- mymat
days <- 50
for (i in 2:days){
matlist[[i]] <- matlist[[i-1]]*2
if (i %% 5 == 0){
matlist[[i]][2,2] <- matlist[[i]][2,2]+1
}
}