[R] when to use `which'?
David Winsemius
dwinsemius at comcast.net
Tue Jul 12 22:29:10 CEST 2011
On Jul 12, 2011, at 4:17 PM, Sam Steingold wrote:
> when do I need to use which()?
>> a <- c(1,2,3,4,5,6)
>> a
> [1] 1 2 3 4 5 6
>> a[a==4]
> [1] 4
>> a[which(a==4)]
> [1] 4
>> which(a==4)
> [1] 4
>> a[which(a>2)]
> [1] 3 4 5 6
>> a[a>2]
> [1] 3 4 5 6
>>
>
> seems unnecessary...
>
It is unnecessary when `a` is a toy case and has no NA's. And you will
find some of the cognoscenti trying to correct you when you do use
which().
a <- c(1,2, NA ,3,4, NaN, 5,6)
> data.frame(lets= letters[1:8], stringsAsFactors=FALSE)[a>0, ]
[1] "a" "b" NA "d" "e" NA "g" "h"
> data.frame(lets= letters[1:8], stringsAsFactors=FALSE)[which(a>0), ]
[1] "a" "b" "d" "e" "g" "h"
If you have millions of records and tens of thousands of NA's (say ~
1% of the data), imagine what your console looks like if you try to
pick out records from one day and get 10,000 where you were expecting
100. A real PITA when you are doing real work.
--
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list