Re: Picking Off Lists That Have No Numbers
- To: mathgroup at smc.vnet.net
- Subject: [mg99541] Re: [mg99471] Picking Off Lists That Have No Numbers
- From: Gregory Lypny <gregory.lypny at videotron.ca>
- Date: Thu, 7 May 2009 06:38:24 -0400 (EDT)
- References: <200905060925.FAA01807@smc.vnet.net>
Darn, that is good! On Wed, May 6, 2009, at 5:41 PM, DrMajorBob wrote: > 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