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

______________________________________________
R-help@r-project.org mailing list
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.

Reply via email to