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
- Follow-Ups:
- Re: Elegant syntax for multiple conditional assignment?
- From: DrBob <drbob@bigfoot.com>
- Re: Elegant syntax for multiple conditional assignment?