Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2011

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

Search the Archive

Re: Difficulty with patterns

  • To: mathgroup at smc.vnet.net
  • Subject: [mg122305] Re: Difficulty with patterns
  • From: Armand Tamzarian <mike.honeychurch at gmail.com>
  • Date: Mon, 24 Oct 2011 05:14:37 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <j80qbl$ae1$1@smc.vnet.net>

On Oct 23, 9:30 pm, "McHale, Paul" <Paul.McH... at excelitas.com> wrote:
> I have recently become increasingly uncomfortable with my areas of ignorance with Mathematica.  The Virtual conference has some really cool demos.  In one, a website is read in and a table of data extracted.  Without patterns, it would have been very difficult.  Need a little help with an example.
>
> Example 1 uses my old standby, the Table[] function.  Works fine.  I am attempting to get better with patterns, so I tried example 2 and 3.  They work, but gives several errors about use of stringjoin needing strings.  What am I doing wrong?
>
> Error: StringJoin::string: String expected at position 1 in StringJoin[n].
>
> (* Load string from WolframAlpha  *)
> m WolframAlpha["usa",{{"LargestCities:CountryData",1},"ComputableData"},
> PodStates->{"LargestCities:CountryData__More","LargestCities:CountryData__More"}];
>
> (* example 1 *)
> mNew=Flatten[m,1];
> mNew=Drop[mNew,1];
> mNew=Drop[mNew,-1];
> mNew=Table[{i[[1,1]] <> i[[1,2]] <> i[[1,2]] ,i[[2]]},{i,mNew}];
> Grid[mNew,Frame->All]
>
> (* example 2 *)
> Clear[n,o,p,q];
> mNew=Cases[m, {{n_String,o_String,p_String},q_} -> { n <>  ", " <> o <> ", " <>  p,q},Infinity ];
> Grid[mNew,Frame->All]
>
> (* example 3 *)
> Clear[n,o,p,q];
> mNew=Cases[m, {{n_,o_,p_},q_} -> { n ,  ", ", o  , ", ", p,q},Infinity ];
> mNew = mNew /. {n___,q_Integer} -> {StringJoin[n],q};
> Grid[mNew,Frame->All]
>
> I even tried,
> mNew = Flatten[m, 1];
> mNew = Drop[mNew, 1];
> mNew = Drop[mNew, -1];
> mNew = Table[{Head[i[[1, 1]]], Head[i[[1, 2]]], Head[ i[[1, 2]]] ,
>     i[[2]]}, {i, mNew}];
> (*mNew=Table[{i[[1,1]] <> i[[1,2]] <> i[[1,2]] ,i[[2]]},{i,mNew}];*)
> Grid[mNew, Frame -> All]
>
> They are all strings!
>
> Thanks,
> Paul
>
> Paul McHale  |  Electrical Engineer, Energetics Systems  |  Excelitas Technologies Corp.
> =09
> Phone:   +1 937.865.3004   |   Fax:  +1 937.865.5170   |   Mobile:   +1 937.371.2828
> 1100 Vanguard Blvd, Miamisburg, Ohio 45342-0312 USA
> Paul.McH... at Excelitas.comwww.excelitas.com
>
> Please consider the environment before printing this e-mail.
> This email message and any attachments are confidential and proprietary to Excelitas Technologies Corp. If you are not the intended recipient of this message, please inform the sender by replying to this email or sending a message to the sender and destroy the message and any attachments.
> Thank you

it is a bit subtle. You need to use RuleDelayed for this operation
instead of Rule.

Mike



  • Prev by Date: Re: Full simplify problem
  • Next by Date: Re: runs slowly?
  • Previous by thread: Re: Difficulty with patterns
  • Next by thread: Re: Difficulty with patterns