Re: second simple problem
- To: mathgroup at smc.vnet.net
- Subject: [mg99700] Re: second simple problem
- From: Szabolcs Horvát <szhorvat at gmail.com>
- Date: Mon, 11 May 2009 06:26:52 -0400 (EDT)
- References: <gu666q$9tf$1@smc.vnet.net>
Francisco Gutierrez wrote:
> Dear sirs:
> I have the following list:
> ex={1,5,7,4,"M",6,7,8,9,1,"M",3}
> I want to replace the M's in the following way: the first M by 5, and the second by2.
> Thus I have a replacement list
> rL={5,2}
> The problem is to get ={1,5,7,4,5,6,7,8,9,1,2,3}
> How can I do this in the most general form (for any length of ex and any number of values of "M")?
> Thanks
> Francisco
>
ms = {5, 2}
This was my first thought, but it makes me feel ill at ease ... a
replacement should not have any side effects, and we should not count on
the RHS of the rule being evaluated precisely once for each item replaced.
Module[{c = 1}, ex /. "M" :> (ms[[c++]])]
So here's a possibly better solution:
ReplacePart[ex, Thread[Position[ex, "M"] -> ms]]