Re: ReplacePart question
- To: mathgroup at smc.vnet.net
- Subject: [mg13202] Re: ReplacePart question
- From: "Allan Hayes" <hay at haystack.demon.cc.uk>
- Date: Mon, 13 Jul 1998 07:42:51 -0400
- References: <6nkvd3$17k@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Here is one way round this. I give only the full version - special cases, for example when expos is a single integer, or repos is omitted need extra code. MyReplacePart[expr_, rep_, expos:{___List}, repos:{___List}]:= Module[{f}, MapIndexed[f, expr,{0, Infinity}, Heads->True]/. Thread[f[_,#]&/@expos ->Extract[rep,repos]]/.f->(#&) ] EXAMPLE MyReplacePart[h[a][k[b[e]],c], {A,C,{E}}, {{1,1},{1,1,1},{0,1}}, {{1},{2},{3,1}}] h[E][k[A],c] Allan Hayes Training and Consulting Leicester UK http://www.haystack.demon.co.uk hay at haystack.demon.co.uk voice: +44 (0)116 271 4198 fax: +44(0)116 271 8642 ------------------------------------------------------------- Walter Seaman wrote in message <6nkvd3$17k at smc.vnet.net>... >hello, >Here is what m'ca ReplacePart is supposed to do according to the online >help and the manual: > >"ReplacePart[expr, new, pos, npos] replaces parts at positions pos in >expr by parts at positions npos in new." > >For example: > >ReplacePart[{a, b, c,d},{x,y},{{1},{4}},2] gives output >{y,b,c,y} > >which is ok. I cannot get m'ca to replace selected parts of expr with >selected parts of new. For example, suppose I want to take the list >{a,b,c,d} and replace a with y and x with b. It seems I should be able >to use the command > >ReplacePart[{a, b, c,d},{x,y},{{1},{4}},{2,1}] > >but the output is >{{x,y}\[LeftDoubleBracket]2,1\[RightDoubleBracket],b, > c,{x,y}\[LeftDoubleBracket]2,1\[RightDoubleBracket]} > >i.e. m'ca is looking for {x,y}[[1,2]] (which is not defined) and trying >to replace it in positions 1 and 4. >If I try > >ReplacePart[{a, b, c,d},{x,y},{{1},{4}},{{2},{1}}] > >I still get the output > >{{x,y}\[LeftDoubleBracket]{2},{1}\[RightDoubleBracket],b, > c,{x,y}\[LeftDoubleBracket]{2},{1}\[RightDoubleBracket]} > >Can anyone tell me how to accomplish this selective replacement? Thanks, >W.Seaman >