Re: any better to apply a function to second column?
- To: mathgroup at christensen.cybernetics.net
- Subject: [mg516] Re: [mg507] any better to apply a function to second column?
- From: Richard Mercer <richard at seuss.math.wright.edu>
- Date: Tue, 07 Mar 1995 09:21:47 -0500
> Hi,
> I would like to know if there is a better way to
> do the following.
>
> Suppose I have list of numbers in pairs:
>
> a = {{x1,y1},{x2,y2},...,{xn,yn}}
>
> I would like to apply to the sequence {y1,y2,...,yn} the
> function f so that a new sequence
>
> b = {{x1,f[y1]},{x2,f[y2]},...,{xn,f[yn]}}
>
> is generated.
>
> My current solution is
>
> b = Transpose[{First /@ a,f[Last /@ a]}]
>
> However, I suspect there should be a much more simpler
> way than this.
>
> Does any body know a more straight forward way to do
> this?
>
> Also, what if I have a matrix of 3 or more columns and
> I would apply f to only the second column, say. What is
> a better way in this case?
>
> Thanks for any info
>
> Richard
This is a common and important situation.
The "best" solution? Here are two candidates.
Apply[{#1,f[#2]}&,a,{1}]
a /. {x_,y_}:>{x,f[y]}
I tend to prefer the first, because the second has the potential to make
unwanted changes at deeper levels (should they exist). This possibility could
be avoided with
Replace[#,{x_,y_}:>{x,f[y]}]& /@ a
Richard Mercer