[R] if statement

Wacek Kusnierczyk Waclaw.Marcin.Kusnierczyk at idi.ntnu.no
Mon Jan 5 13:17:27 CET 2009


Duncan Murdoch wrote:
> Shruthi Jayaram wrote:
>> Hi,
>>
>> How do I check for two conditions in an if loop? I want to check if a
>> value
>> lies between 2 other values.
>>   
> "if" isn't normally a loop, but what you want is the vectorized
> version, the ifelse() function.
>> For example,
>> A <- ts(rnorm(120), freq=12, start=c(1992,8))
>> X <- 0.5
>> Y <- 0.8
>>
>> I would like to create a new vector C for which C[i] is 0 if A[i]
>> lies in
>> between X and Y.   
>
> C <- ifelse( X < A & A < Y, 0, A)

or using Petr's hint:

C <- (A<X|A>Y)*A

which seems much faster on substantial inputs.

pay attention to whether your 'in between' is inclusive or not; the two
versions above are not equivalent.

vQ




More information about the R-help mailing list