[R] "NA-friendly" operator
David Winsemius
dwinsemius at comcast.net
Tue Oct 30 22:51:44 CET 2012
On Oct 30, 2012, at 2:25 PM, Berend Hasselman wrote:
>
> On 30-10-2012, at 22:08, vincent guyader wrote:
>
>> Hi everyone,
>>
>> i'm looking for a "NA-friendly" operator
>>
>> I explain :
>>
>> vec<-c(3,4,5,NA,1,NA,9,NA,1)
>>
>> vec[vec == 1] # NA 1 NA NA 1
>>
>> I dont want the NA's :
>> vec[vec == 1 & ! is.na(vec)]# 1 1
>> is the same as
>> vec[vec %in% 1] # 1 1
>>
>> %in% is NA-friendly :)
>>
>> But if i want >2 without the NA's :
>>
>> vec[vec>2] #3 4 5 NA NA 9 NA
>>
>> if i dont want the NA i have to do :
>>
>> vec[vec>2 & !is.na(vec)] #3 4 5 9
>>
>> is there an opérator to directly do that?
>
>
> You could define one
>
> "%>.nona%" <- function(x,y) x[x>y & !is.na(vec)]
>
> and use
>
> vec %>.nona% 2
>
> Use ?`%in%` to see an example (in the Examples section)
Don't need to define a new operator. %in% will work fine:
vec<-c(3,4,5,NA,1,NA,9,NA,1)
vec[vec %in% 1]
(Seems a bit silly if you ask me. Using which would seem to provide more minforamtion.)
> which(vec==1)
[1] 5 9
--
David Winsemius, MD
Alameda, CA, USA
More information about the R-help
mailing list