Re: Map onto a column
- To: mathgroup at smc.vnet.net
- Subject: [mg125462] Re: Map onto a column
- From: Bob Hanlon <hanlonr357 at gmail.com>
- Date: Wed, 14 Mar 2012 00:44:36 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <201203130802.DAA12753@smc.vnet.net>
a = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
col = 2;
With just MapAt:
MapAt[f, a, Thread[{Range[Length[a]], col}]]
{{1, f[2], 3}, {4, f[5], 6}, {7, f[8], 9}}
However, the abbreviated form of your original approach is much cleaner
MapAt[f, #, col] & /@ a
{{1, f[2], 3}, {4, f[5], 6}, {7, f[8], 9}}
Bob Hanlon
On Tue, Mar 13, 2012 at 4:02 AM, Sly Pandemia <slypandemia at gmail.com> wrote:
> Is there a neat way to map a function onto a specific column in an
> array?
>
> For example if I have
>
> a = {{1,2,3},{4,5,6},{7,8,9}}
>
> and I want to map f onto the second element in each row. I would
> normally use
>
> b = Map[MapAt[f,#,2]&,a]
>
> but this seems a bit awkward. I would expect to be able to use
>
> b = MapAt[f,a,{All,2}]
>
> but this appears to be illegal syntax.
>
> Is there any way to do what I want with a single Map/MapAt function?
>
- References:
- Map onto a column
- From: Sly Pandemia <slypandemia@gmail.com>
- Map onto a column