MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Picking Off Lists That Have No Numbers

  • To: mathgroup at smc.vnet.net
  • Subject: [mg99548] Re: Picking Off Lists That Have No Numbers
  • From: Szabolcs Horvát <szhorvat at gmail.com>
  • Date: Thu, 7 May 2009 06:39:41 -0400 (EDT)
  • References: <gtrl29$1o5$1@smc.vnet.net>

Gregory Lypny wrote:
> Hi everyone,
> 
> In a previous thread, "Select and Cases Give Different Answers," I  
> discussed a bug, confirmed by others on the list and which Daniel  
> Lichtblau of Wolfram said has been fixed in the development kernel,  
> and I wonder whether we have the same problem here.
> 
> I want to know if a list has no numbers in it.  Here I get the wrong  
> answer for the first list.
> 
> FreeQ[#, _Number] & /@ {{"NA", 2.3, 3/8}, {"NA", "NA", "NA"}}
> 
> yields {True, True}
> And same here.
> 
> MemberQ[#, _Number] & /@ {{"NA", 2.3, 3/8}, {"NA", "NA", "NA"}}
> 
> {False, False}

The pattern _Number matches expressions whose head is Number.  Number 
usually not used as the head of anything in Mathematica.

Head /@ {"NA", 2.3, 3/8}

{String, Real, Rational}

Try _?NumberQ instead.

> 
> If I use Real or Rational for the criterion, I get the right answers,  
> but that's no good if you have some lists that are mixtures of strings  
> and reals and others that are mixtures of strings and rationals.
> 
> FreeQ[#, _Real] && FreeQ[#, _Rational]
> & /@ {{"NA", 2.3, 3/8}, {"NA", "NA", "NA"}, {"NA", 2.3, "NA"}, {"NA",  
> 2.3, 9.4}}
> 
> Now this works.
> 
> Count[#, _String] == Length[#] & /@ {{"NA", 2.3, 3/8}, {"NA", "NA",  
> "NA"}}
> 
> {False, True}
> 
> But this does not!
> 
> Count[#, _Number] == 0 & /@ {{"NA", 2.3, 3/8}, {"NA", "NA", "NA"}}
> 
> {True, True}
> 
> I don't mean to be a pain, but it is important in my sample selection  
> procedures to be able to make the distinction between strings and  
> numbers, so I'd be interested in knowing whether I'm misunderstanding  
> properties such as Number or Numeric (don't really know the  
> difference) or this is a bug.
> 

Again, _SomeHead matches expressions with head SomeHead.  All expression 
have one unique head, so if something is e.g. Rational it cannot be Real 
or something else at the same time.


  • Prev by Date: Re: Re: Reading csv with ;
  • Next by Date: Re: derivative of a well-behaved function
  • Previous by thread: Re: Picking Off Lists That Have No Numbers
  • Next by thread: Re: Picking Off Lists That Have No Numbers