MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Elegant syntax for multiple conditional assignment?


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?