Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2005
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2005

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

Search the Archive

Re: Elegant syntax for multiple conditional assignment?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg54500] Re: [mg54337] Elegant syntax for multiple conditional assignment?
  • From: "Wolf, Hartmut" <Hartmut.Wolf at t-systems.com>
  • Date: Tue, 22 Feb 2005 04:22:57 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

 

>-----Original Message-----
>From: Scott Hemphill [mailto:hemphill at hemphills.net] 
To: mathgroup at smc.vnet.net
>Sent: Saturday, February 19, 2005 8:32 AM
>To: mathgroup at smc.vnet.net
>Subject: [mg54500] [mg54337] 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
>
>

t = Transpose;
{a, c, x, y} = t@Thread[If[##]] &[cond, t[new], t[old]]


--
Hartmut Wolf


  • Prev by Date: Re: Solutions of an equation under complex form
  • Next by Date: Re: Solutions of an equation under complex form
  • Previous by thread: Re: Re: Elegant syntax for multiple conditional assignment?
  • Next by thread: Re: Elegant syntax for multiple conditional assignment?