       Re: Select and Cases Give Different Answers

• To: mathgroup at smc.vnet.net
• Subject: [mg99160] Re: [mg99125] Select and Cases Give Different Answers
• From: Bob Hanlon <hanlonr at cox.net>
• Date: Wed, 29 Apr 2009 03:48:00 -0400 (EDT)

```theList = {"NA", "NA", -0.01315, 0.0120957, -1/41, 0.00625, "NA", "NA", 5/8,
"NA"};

Unequal doesn't make any assumptions about a Rational

# != "NA" & /@ theList

{False, False, True, True,
-(1/41) != "NA", True, False,
False, 5/8 != "NA", False}

You can force it with N

f1 = Select[theList, N[#] != "NA" &]

{-0.01315, 0.0120957, -(1/41),
0.00625, 5/8}

Here are some other alternatives

f1 == Cases[theList, _?(N[#] != "NA" &)]

True

fl == Cases[theList, _?NumericQ]

True

fl == Select[theList, NumericQ]

True

fl == DeleteCases[theList, "NA"]

True

fl == DeleteCases[theList, _?StringQ]

True

fl == DeleteCases[theList, _?(! NumericQ[#] &)]

True

fl == Select[theList, ! # === "NA" &]

True

fl == Cases[theList, _?(! # === "NA" &)]

True

fl == Select[theList, # =!= "NA" &]

True

fl == Cases[theList, _?(# =!= "NA" &)]

True

fl == Cases[theList, Except["NA"]]

True

fl == Cases[theList, Except[_?StringQ]]

True

fl == DeleteCases[theList, Except[_?NumericQ]]

True

fl == (theList /. "NA" :> Sequence[])

True

fl == (theList /. _?StringQ :> Sequence[])

True

fl == Last[GatherBy[theList, NumericQ]]

True

fl == Last[GatherBy[theList, StringQ]]

True

f1 == Pick[theList, NumericQ /@ theList]

True

f1 == Pick[theList, Not /@ StringQ /@ theList]

True

f1 == Pick[theList, (N[#] != "NA") & /@ theList]

True

f1 == Pick[theList, Thread[N[theList] != "NA"]]

True

Bob Hanlon

---- Gregory Lypny <gregory.lypny at videotron.ca> wrote:

=============
Hello everyone,

Suppose I have the following list that is a mixture of the string "NA"
and five numeric quantities.

theList = {"NA", "NA", -0.01315, 0.0120957, -1/41, 0.00625, "NA",
"NA", 5/8,  "NA"}

I want to weed out the NAs, and all of the following

Cases[theList, _?NumericQ]

DeleteCases[theList, _?StringQ]

Select[theList, # =E2=88=88 Reals &]

Select[theList, # =!= "NA" &]

work fine because each returns {-0.01315, 0.0120957, -(1/41), 0.00625,
5/8}.

But I don't understand why Unequal, when used as the criterion for
Select as in

Select[theList, # != "NA" &],

fails to return the rationals, and I get only three elements
{-0.01315, 0.0120957, 0.00625}.  I'd appreciate any clarification on
the difference between UnsameQ and Unequal because my inclination in
most circumstances is to use an equal sign or an unequal sign to make
simple comparisons yet it doesn't give me the answer I expect, and I'd
hate to make a costly mistake somewhere down the road!

Regards,

Gregory

```

• Prev by Date: Re: RowReduce::luc when using NSolve
• Next by Date: Re: Select and Cases Give Different Answers