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