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?