Hi David and Charles Your suggestions helped me a lot. Could you please suggest how I could vectorize the following for loop? z = NULL p = 0.25 x = rnorm(100) z[1] = p*x[1] + (1-p)*5 for(i in 2:100) { z[i] = p*x[i]+(1-p)*z[i-1] } Thank you
Regards On Mon, Feb 1, 2021 at 11:01 AM David Winsemius <dwinsem...@comcast.net> wrote: > > On 1/31/21 1:26 PM, Berry, Charles wrote: > > > >> On Jan 30, 2021, at 9:32 PM, Shaami <nzsh...@gmail.com> wrote: > >> > >> Hi > >> I have made the sample code again. Could you please guide how to use > >> vectorization for variables whose next value depends on the previous > one? > >> > > I agree with Charles that I suspect your results are not what you > expect. You should try using cat or print to output intermediate results > to the console. I would suggest you limit your examination to a more > manageable length, say the first 10 results while you are working out > your logic. After you have the logic debugged, you can move on to long > sequences. > > > This is my suggestion for a more compact solution (at least for the > inner loop calculation): > > set.seed(123) > > x <- rnorm(2000) > > z <- Reduce( function(x,y) { sum(y+5*x) }, x, accumulate=TRUE) > > w<- numeric(2000) > > w <- (1:2000)[ z >4 | z < 1 ] # In your version the w values get > overwritten and end up all being 2000 > > > I would also advise making a natural language statement of the problem > and goals. I'm thinking that you may be missing certain aspects of the > underying problem. > > -- > > David. > > > > > Glad to help. > > > > First, it could help you to trace your code. I suspect that the results > are not at all what you want and tracing would help you see that. > > > > I suggest running this revision and printing out x, z, and w. > > > > #+begin_src R > > w = NULL > > for(j in 1:2) > > { > > z = NULL > > x = rnorm(10) > > z[1] = x[1] > > for(i in 2:10) > > { > > z[i] = x[i]+5*z[i-1] > > if(z[i]>4 | z[i]<1) { > > w[j]=i > > } else { > > w[j] = 0 > > } > > } > > } > > #+end_src > > > > > > You should be able to see that the value of w can easily be obtained > outside of the `i' loop. > > > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.