Voici le code avec lequel je travaille:
## Round 1
b <- c(5000,2500)
r <- c(2,2.1)
pm <- c(200,240)
I <- b*(r/1200)
pi <- pm-I
end <- b-pi
end
## Round 2
b1 <- end
r1 <- (2.3,2.3)
I1 <- b1*(r/1200)
pi1 <- pm-I1
end1 <- b1-pi1
end1
Cela produit le bon résultat, qui est montréci-dessous dans le post. Mais, vous pouvez voir à quel point cela peut devenir agaçant pendant environ 30 tours, alors je pensais pouvoir utiliser une fonction * sapply. Alors j'ai tenté de faire:
r2<- matrix(c(2,2.1,2.3,2.3),nrow=2)
I2 <- sapply(b, function (x)
x*(r2/1200)
)
pi2 <- sapply(I, function (l)
pm-l )
end2 <- b-pi2
end2
Qui donne:
[1,] 4808.333 4804.375
[2,] 2268.333 2264.375
Cela n'a pas produit le résultat souhaité, à savoir:
[1,] 4808.333 4616.347
[2,] 2264.375 2028.338
Comment ferais-je exactement cela parce que les variables "end" ont besoin de la valeur "b" mise à jour, comme indiqué dans la partie étoilée du code ci-dessous.
**b1 <- end**
r1 <- 2.3
I1 <- b1*(r/1200)
pi1 <- pm-I1
end1 <- b1-pi1
end1
Merci pour votre temps.
modifier
Pierre donne une réponse ci-dessous, mais j'en ai une autrequestion qui est comment ferais-je ce processus "n" nombre de fois. La réponse de Pierre fonctionne pour cette question spécifique. Mais j’essaie de faire en sorte que cela fonctionne lorsque "r" et "r1" sont joints dans une matrice telle que
rate <- rbind(r,r1)
Et utilisez ensuite une fonction sapply du genre:
t(sapply(b, function(x) {b <- b - (pm - b*(rate/1200));b}))
Aucune suggestion?
Réponses:
1 pour la réponse № 1C'est une situation où pour les boucles brillent:
rlist <- list(r, r1)
x <- vector("list", 2)
for(i in 1:2) {b <- b - (pm - b*(rlist[[i]]/1200)); x[[i]] <- b}
`names<-`(as.data.frame(x), c("x", "y"))
# x y
#1 4808.333 4617.549
#2 2264.375 2028.715