# Apply function to a specific column

Let's say I have some data:

data={{a1,b1},{a2,b2},{a3,b3},{a4,b4},...}


and I would like to apply the function:

f1[x_]=x*5 to every a_i element.

How can I do this?

The best solution I've found so far is to do:

MapAt[f1, data, {{1, 1}, {2, 1}, {3, 1}, {4, 1}...}]


Up to the length of my data, but I'm sure there's a more efficient solution for this.

• MapAt[f1, data, {All, 1}]? – J. M.'s ennui May 24 '16 at 16:42
• Map[Apply[{f[#1], ##2} &], data], if you insist... but J.M.'s approach is best. – Emilio Pisanty May 24 '16 at 16:44
• Transpose@{f1[#1], #2} & @@ Transpose@data If your f1 is Listable (and yours is ) that can give you significant speed increase. – BlacKow May 24 '16 at 16:50
• also: {f1@#, #2} & @@@ data – kglr May 24 '16 at 23:44
• @BlacKow #1 and # are equivalent. – LLlAMnYP May 25 '16 at 7:16

lst = data = {{a1, b1}, {a2, b2}, {a3, b3}, {a4, b4}};

• Whenever I do one of these solutions I get the resulting list ${{a1,{b1}},{a2,{b2}},etc.}}$. How do I remove the resulting list around the second element? – Ely Eastman Apr 24 '20 at 14:48