Or perhaps: W <- 1:2000 W[z>4|z<2] <- 0
Sent from my iPhone > On Feb 1, 2021, at 9:56 PM, David Winsemius <dwinsem...@comcast.net> wrote: > > Or perhaps you wanted: > > W <- z > W[z>4|z<2] <- 0 > > Sent from my iPhone > >>> On Feb 1, 2021, at 9:41 PM, David Winsemius <dwinsem...@comcast.net> wrote: >>> >> Just drop the “+” if you want logical. >> >> Sent from my iPhone >> >>>> On Feb 1, 2021, at 9:36 PM, Shaami <nzsh...@gmail.com> wrote: >>>> >>> >>> Hi Prof. David >>> >>> Thank you. I will always follow your advice. The suggested code worked. It >>> gives either 1 or 0 depending on the condition to be true. I want index of >>> z for which the condition is true (instead of 1) else zero. Could you >>> please suggest? >>> >>> Thank you >>> >>> Shaami >>> >>>> On Tue, Feb 2, 2021 at 10:16 AM David Winsemius <dwinsem...@comcast.net> >>>> wrote: >>>> Cc’ed the list as should always be your practice. >>>> >>>> Here’s one way (untested): >>>> >>>> W <- +(z>4| z<2) # assume z is of length 20 >>>> >>>> — >>>> David >>>> >>>> Sent from my iPhone >>>> >>>>>> On Feb 1, 2021, at 7:08 PM, Shaami <nzsh...@gmail.com> wrote: >>>>>> >>>>> >>>>> Hi Prof. David >>>>> >>>>> In the following state >>>>> >>>>> W = (1:2000)[z >4|z<2) >>>>> >>>>> Could you please guide how I can assign zero if condition is not >>>>> satisfied? >>>>> >>>>> Best Regards >>>>> >>>>> Shaami >>>>> >>>>>> On Mon, 1 Feb 2021, 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.