我在循环中进行计算。我希望在迭代达到一定数量时更改计算。我一直试图在第一个循环中运行另一个循环,以根据需要改变计算。这可能是一种完全错误的方法。建议欢迎。
u=seq(0,4,length=10)
v=dexp(u,rate=1) ##exponential decay
w=0.87*v #the vector that I want to apply to calculations
x=25 #the iteration where I want to start altering the main loop calcs, from here to here + length(w
test=data.frame(seq(1,150,2),seq(151,300,2))##some data
for(y in 1:(length(test)))
{
res=test[,1]*test[,2]###the main calculation of the loop, simplified
for(z in x:x+(length(w)))###on iteration x=25 start this secondary loop after running the first loop
{
res[z+1]=res[z]-(res[z]*w[z])
}
}
plot(cumsum(res))
这不符合预期,我正在寻找增加的下降或在图上x = 25的展平。
答案 0 :(得分:0)
以下更改了迭代25之后的计算:
u=seq(0,4,length=10)
v=dexp(u,rate=1)
w=0.87*v
test=data.frame(seq(1,150,2),seq(151,300,2))
res <- numeric(length=75)
for(y in seq(nrow(test)))
{
ifelse(y < 25, res[y] <- test[y,1]*test[y,2], res[y] <- NA)
}
res[is.na(res)]<-res[24]
res2 <- as.data.frame(res)
res2 <- sweep(res2,MARGIN=2,w,`*`)
res2 <- as.numeric(as.matrix(res2))
res <- append(res[1:24],res2[25:75])
plot(cumsum(res))
你想和w做什么?我已经从迭代25中回收了矢量。