[R] effective way to return only the first argument of "which()"

R. Michael Weylandt michael.weylandt at gmail.com
Wed Sep 19 17:03:15 CEST 2012


On Wed, Sep 19, 2012 at 3:20 PM, Mike Spam <ichmagspam at googlemail.com> wrote:
> Hi,
>
> I was looking for a function like "which()" but only returns the first argument.
> Compare:
>
> x <- c(1,2,3,4,5,6)
> y <- 4
> which(x>y)
>
> returns:
> 5,6
>
> which(x>y)[1]
> returns:
> 5
>
> which(x>y)[1] is exactly what i need. I did use this but the dataset
> is too big (~18 mio. Points).
> That's why i need a more effective way to get the first element of a
> vector which is bigger/smaller than a specific number.
>
> I found "match()" but this function only works for equal numbers.
>

It's long felt a little hack-ish but you can actually use which.min()
or which.max() on logical vectors for just this purpose.

x <- sample(20)

which.max(x < 5) # first x satisfying the condition.

Cheers,
Michael

>
>
> Thanks,
> Nico
>
> ______________________________________________
> R-help at 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.




More information about the R-help mailing list