applies f to the element at position n in expr. If n is negative, the position is counted from the end.


applies f to the part of expr at position {i,j,}.


applies f to parts of expr at several positions.


represents an operator form of MapAt that can be applied to an expression.


  • MapAt[f,expr,{i,j,}] or MapAt[f,expr,{{i,j,}}] applies f to the part expr[[i,j,]].
  • MapAt[f,expr,{{i1,j1,},{i2,j2,},}] applies f to parts expr[[i1,j1,]], expr[[i2,j2,]], . »
  • The list of positions used by MapAt is in the same form as is returned by the function Position. »
  • MapAt works on Association objects, using the same specification for keys as in Part.
  • MapAt applies f repeatedly to a particular part if that part is mentioned more than once in the list of positions. »
  • MapAt[f,pos][expr] is equivalent to MapAt[f,expr,pos].


open allclose all

Basic Examples  (8)

Map f onto the part at position 2:

Map f onto multiple parts:

Map f onto a more deeply nested part:

Map f onto the second element of all top-level parts (the "second column"):

Map f onto an association:

Use Key to specify position:

For string keys, Key is not needed:

Use negative position in an association:

Use the operator form of MapAt:

Scope  (9)

Part Specifications  (9)

A single element of the expression:

Negative numbers count from the end:

Map at a part at level 2:

Map at several elements:

Map at several nested parts:

Map using Span syntax:

Map f at a more deeply nested part:

Map f at several locations:

Map f at several levels:

Generalizations & Extensions  (4)

MapAt can be used on expressions with any head:

Key and integer part specifications in associations are different:

The function can be mapped onto the heads as well:

Map can be used on sparse arrays:

Applications  (4)

Reset an element in a matrix:

Reverse the sign of an element in a matrix:

Enumerate cases with f mapped onto successive elements:

Reverse the color of a cell at a random position at each step:

Properties & Relations  (2)

MapAt can use lists of parts returned by Position:

These are the subexpressions returned by Extract:

MapAt applies f repeatedly if a part is mentioned repeatedly:

Possible Issues  (1)

MapAt[f,expr,{}] does not map f because the list of positions is empty:

MapAt[f,expr,{{}}] maps f to position {}, which corresponds to the whole expression expr:

Introduced in 1988
Updated in 2014