Elegant syntax for multiple conditional assignment?

• To: mathgroup at smc.vnet.net
• Subject: [mg54337] Elegant syntax for multiple conditional assignment?
• From: Scott Hemphill <hemphill at hemphills.net>
• Date: Sat, 19 Feb 2005 02:31:38 -0500 (EST)
• Reply-to: hemphill at alumni.caltech.edu
• Sender: owner-wri-mathgroup at wolfram.com

```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
--
Scott Hemphill	hemphill at alumni.caltech.edu
"This isn't flying.  This is falling, with style."  -- Buzz Lightyear

```

• Prev by Date: Re: 64-bit pentium
• Next by Date: Re: Re: Re: Re: Bug Report - Two numerical values for a same variable
• Previous by thread: RE: text blocks graph axis?
• Next by thread: Re: Elegant syntax for multiple conditional assignment?