From maechler at stat.math.ethz.ch  Fri Mar 20 10:46:17 2009
From: maechler at stat.math.ethz.ch (Martin Maechler)
Date: Fri, 20 Mar 2009 10:46:17 +0100
Subject: [Rd] [R] which.na
In-Reply-To: <46B8F50B47374D0FB12E205F51C291FA@DD4XFW31>
References: <816b5ce40903191837y58f6dc0bw98f5cdbd41f11484@mail.gmail.com>
	<46B8F50B47374D0FB12E205F51C291FA@DD4XFW31>
Message-ID: <18883.26089.830116.969445@lynne.math.ethz.ch>

>>>>> "CAPE" == Charles Annis, P E <Charles.Annis at statisticalengineering.com>
>>>>>     on Thu, 19 Mar 2009 22:46:10 -0400 writes:

    >> ?is.na
    >> x <- c(NA, 3, 4, 5, NA)
    >> which(is.na(x))
    CAPE> [1] 1 5

well, of course.

But note that  which.na(.) could be implemented to be 
faster (because needing much less memory) than the above,
notably when  x  is large and  has only few NAs

But this now has *REALLY*  changed into a topic belonging to
R-devel, not R-help

--> hence I've diverted the thread to there.

I have recently entertained similar thoughts, i.e. wished for R
functions that compute  
	  which( function_returning_logical(..) )
and also
	    any( function_returning_logical(..) )

directly {on .Internal i.e. C-level} instead of going to
construct the potentially huge logical vector.

For what functions should this happen?
I agree that  is.na() is one of them; but then, why not
    is.nan() /  is.finite() 
too?

Instead of defining a slew of such functions  
which.foo(), which.bar(), any.foo(), any.bar(), etc,
it would be nice to have a generic interface such as

   whichApply(x, is.na)
   whichApply(x, is.nan)

   anyApply(x, is.na) 

where internally, for some functions {in a given internal
table}, the fast shortcut would be used, and for others the
interface would be equivalent to  which( thatFunction( x ) )

Martin Maechler, ETH Zurich (and R Core team)


    CAPE> Charles Annis, P.E.

    CAPE> Charles.Annis at StatisticalEngineering.com
    CAPE> phone: 561-352-9699
    CAPE> eFax:  614-455-3265
    CAPE> http://www.StatisticalEngineering.com
 

    CAPE> -----Original Message-----
    CAPE> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On
    CAPE> Behalf Of Santosh
    CAPE> Sent: Thursday, March 19, 2009 9:37 PM
    CAPE> To: r-help at r-project.org
    CAPE> Subject: [R] which.na

    CAPE> Hi R- users

    CAPE> I was wondering if there is any function equivalent to which.na used in S+?

    CAPE> Thanks much in advance!

    CAPE> Regards,
    CAPE> Santosh

    CAPE> [[alternative HTML version deleted]]

    CAPE> ______________________________________________
    CAPE> R-help at r-project.org mailing list
    CAPE> https://stat.ethz.ch/mailman/listinfo/r-help
    CAPE> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
    CAPE> and provide commented, minimal, self-contained, reproducible code.

    CAPE> ______________________________________________
    CAPE> R-help at r-project.org mailing list
    CAPE> https://stat.ethz.ch/mailman/listinfo/r-help
    CAPE> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
    CAPE> and provide commented, minimal, self-contained, reproducible code.



[Rd] [R] which.na
Martin Maechler