Re: Elegant syntax for multiple conditional assignment?
- To: mathgroup at smc.vnet.net
- Subject: [mg54416] Re: [mg54337] Elegant syntax for multiple conditional assignment?
- From: DrBob <drbob at bigfoot.com>
- Date: Sun, 20 Feb 2005 00:08:48 -0500 (EST)
- References: <200502190731.CAA05948@smc.vnet.net>
- Reply-to: drbob at bigfoot.com
- Sender: owner-wri-mathgroup at wolfram.com
(inputs)
old = Array[o, {4}]
new = Array[n, {4}]
cond = Array[1 == Random[Integer, {0, 1}] & , {4}]
(outputs)
{o[1], o[2], o[3], o[4]}
{n[1], n[2], n[3], n[4]}
{True, False, True, False}
(input)
Thread[If[cond, Evaluate[new], Evaluate[old]]]
(result)
{n[1], o[2], n[3], o[4]}
or:
old = {a, c, x, y} = Array[o, {4}]
new = {a, c, x, y} = old^2
cond = Array[1 == Random[Integer, {0, 1}] &, {4}]
{o[1], o[2], o[3], o[4]}
{o[1]^2, o[2]^2, o[3]^2, o[4]^2}
{True, False, False, False}
{a, c, x, y} = Thread[If[cond, Evaluate@new, Evaluate@old]]
{o[1]^2, o[2], o[3], o[4]}
Bobby
On Sat, 19 Feb 2005 02:31:38 -0500 (EST), Scott Hemphill <hemphill at hemphills.net> wrote:
> Dear Mathematica aficionados:
>
> I have several state variables, each of which is a vector of "n" elements.
> I would like to assign each element in each vector based on a condition
> which is in the corresponding position in a condition vector. To be more
> specific:
>
> Each of a, c, x and y is a List of Length n.
> cond is a List of Length n, containing True and False values
>
> What I have is
>
> old = {a, c, x, y};
>
> code which changes a, c, x, and y
>
> new = {a, c, x, y};
>
> What I want to do is assign to each element of a, c, x and y the old value
> of a, c, x or y if the corresponding element of cond is False, and the new
> value of a, c, x or y if the corresponding element of cond is True.
>
> I've got a method that works:
>
> t=Transpose;
> {a, c, x, y} = t[If[#[[1]],#[[2]],#[[3]]]& /@ t[{cond,t[new],t[old]}]];
>
> All the transpositions and array indexing make me wonder if there's a more
> elegant way of expressing this.
>
> Any takers? Thanks in advance.
>
> Scott
--
DrBob at bigfoot.com
www.eclecticdreams.net
- References:
- Elegant syntax for multiple conditional assignment?
- From: Scott Hemphill <hemphill@hemphills.net>
- Elegant syntax for multiple conditional assignment?