MathGroup Archive 2008

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

Search the Archive

Re: Apply function to parts of a list

  • To: mathgroup at smc.vnet.net
  • Subject: [mg86366] Re: Apply function to parts of a list
  • From: Roland Franzius <roland.franzius at uos.de>
  • Date: Sun, 9 Mar 2008 05:05:21 -0500 (EST)
  • References: <fqo8pn$svq$1@smc.vnet.net> <fqqs3l$kfp$1@smc.vnet.net> <fqtqog$da4$1@smc.vnet.net>

guerom00 schrieb:
> Thank you very much for all the answers ! Great !
> 
> More generally now : Again I have a list of list but with more
> "dimensions" Something like that :
> 
> data={{x1,y1,z1,f1,g1,h1},{x2,y2,z2,f2,g2,h2},{x3,y3,z3,f3,g3,h3},...
> {xn,yn,zn,fn,gn,hn}}
> 
> And let's say I wanna, for the sake of the example, add 10 to all the
> y's i.e. I want
> 
> {{x1,y1+10,z1,f1,g1,h1},{x2,y2+10,z2,f2,g2,h2},{x3,y3+10,z3,f3,g3,h3},...
> {xn,yn+10,zn,fn,gn,hn}}
> 
> According to all your suggestions, I could do
> 
> {#1,#2+10,#3,#4,#5,#6}& @@@ data
> 
> Right ? Isn't there another simpler way (imagine instead of 6 elements
> (x,y,z,f,g,h), I have 100 !)
> 

Set

smb=ToString/@{x,y,z,f,g,h}
nmb=ToString/@Range[3]
X = ToExpression@Outer[#2 <> #1 &, nmb, smb]

    {{x1, y1, z1, f1, g1, h1},
     {x2, y2, z2, f2, g2, h2},
     {x3, y3, z3, f3, g3, h3}}

You can MapAt Plus[#,10]&

MapAt[# + 10 &, #, {2}] & /@ X

or you Replace Symbols according to Position Part 2

X /. {a_Symbol?(Position[X, #][[1, 2]] == 2 &) :> a + 10}

or you add a matrix

X + Array[If[#2 == 2, 10, 0] &, Dimensions[X]]


You can even pick symbols beginning with y independent of their position

X /. a_?(StringTake[ToString[#], 1] == "y" &) :> a + 10

-- 

Roland Franzius


  • Prev by Date: Determinant and Characteristic Polynomial not working properly
  • Next by Date: Re: changing style of vertices for ShowGraph with Combinatorica
  • Previous by thread: Re: Apply function to parts of a list
  • Next by thread: Re: Apply function to parts of a list