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 <dwinsemius at
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 <dwinsemius at
comcast.net> wrote:
>>>
>> ?Just drop the ?+? if you want logical.
>>
>> Sent from my iPhone
>>
>>>> On Feb 1, 2021, at 9:36 PM, Shaami <nzshaam at 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 <dwinsemius
at 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 <nzshaam at
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,
<dwinsemius at comcast.net> wrote:
>>>>>>
>>>>>> On 1/31/21 1:26 PM, Berry, Charles wrote:
>>>>>> >
>>>>>> >> On Jan 30, 2021, at 9:32 PM, Shaami
<nzshaam at 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]]