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