Re: Picking Off Lists That Have No Numbers
- To: mathgroup at smc.vnet.net
- Subject: [mg99539] Re: [mg99471] Picking Off Lists That Have No Numbers
- From: DrMajorBob <btreat1 at austin.rr.com>
- Date: Thu, 7 May 2009 06:38:02 -0400 (EDT)
- References: <200905060925.FAA01807@smc.vnet.net>
- Reply-to: drmajorbob at bigfoot.com
Or in one statement: mixed = {"NA", 2.3, 3/8, "NA", "NA", "NA"}; {first, last} = Select[mixed, NumericQ][[{1, -1}]] {2.3, 3/8} Bobby On Wed, 06 May 2009 15:56:59 -0500, Gregory Lypny <gregory.lypny at videotron.ca> wrote: > Thanks Bobby, > > It's crystal now or almost so. Painful yet kind of fun getting there. > For example, I came up with this way to identify the location of the > first and last numerical elements in a mixed list of strings and numbers. > > Regards, > > G. > > posOfFirstNumericalObs = First[Position[myMixedList, _?NumericQ]][[1]] > > posOfLastNumericalObs = Last[Position[myMixedList, _?NumericQ]][[1]] > > > On Wed, May 6, 2009, at 4:46 PM, DrMajorBob wrote: > >> All the "wrong" answers are caused by bad syntax or arguments. >> >> FreeQ[#, _Number] & /@ {{"NA", 2.3, 3/8}, {"NA", "NA", "NA"}} >> >> and >> >> MemberQ[#, _Number] & /@ {{"NA", 2.3, 3/8}, {"NA", "NA", "NA"}} >> >> both fail because Number is not the Head for numbers: >> >> Map[Head, {{"NA", 2.3, 3/8}, {"NA", "NA", "NA"}}, {2}] >> >> {{String, Real, Rational}, {String, String, String}} >> >> Head /@ {2.3, 2/3, 1 + I, Pi} >> >> {Real, Rational, Complex, Symbol} >> >> so _Number doesn't match any of the elements. >> >> What you need instead is something like >> >> FreeQ[#, _?NumericQ] & /@ {{"NA", 2.3, 3/8}, {"NA", "NA", "NA"}} >> >> {False, True} >> >> NumericQ /@ {2.3, 2/3, 1 + I, Pi} >> >> {True, True, True, True} >> >> All the other problems are similar. >> >> Bobby >> >> On Wed, 06 May 2009 04:25:48 -0500, Gregory Lypny >> <gregory.lypny at videotron.ca> 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} >>> >>> 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. >>> >>> >>> Gregory >>> >> >> >> >> --DrMajorBob at bigfoot.com > -- DrMajorBob at bigfoot.com
- References:
- Picking Off Lists That Have No Numbers
- From: Gregory Lypny <gregory.lypny@videotron.ca>
- Picking Off Lists That Have No Numbers