Re: Apply a function to parts of a list
- To: mathgroup at smc.vnet.net
- Subject: [mg110304] Re: Apply a function to parts of a list
- From: "David Park" <djmpark at comcast.net>
- Date: Sun, 13 Jun 2010 04:07:51 -0400 (EDT)
Here is one method:
mat = Transpose[{{a, b, c, d}, {5, 6, 7, 8}}]
{{a, 5}, {b, 6}, {c, 7}, {d, 8}}
MapAt[#/2 &, mat, Table[{i, 2}, {i, 4}]]
{{a, 5/2}, {b, 3}, {c, 7/2}, {d, 4}}
David Park
djmpark at comcast.net
http://home.comcast.net/~djmpark/
From: Rui [mailto:rui.rojo at gmail.com]
I have always done very ugly code when trying to do something
seemingly simple and basic such as applying a function to subparts of a list.
Simple example, I want to divide by 2 all the second elements of a list
{{a, 5}, {b, 6}, ...} --> {{a, 5/2}, ...}
My ideas:
Transpose -> MapAt/Map -> Transpose
Build the sublist with Part and then rebuild it
Use Map and a function like #[[All, 2]] and then rebuild it.
I don't like any solution. I wanted to know if there's anything simple
that I'm overseing
Thanks guys