# TreeMapAt

TreeMapAt[f,tree,pos]

applies f to the data at the position specified by pos in tree.

TreeMapAt[f,tree,{pos1,pos2,}]

applies f to the data at several positions.

TreeMapAt[f,pos]

represents an operator form of TreeMapAt that can be applied to a tree.

# Details

• TreeMapAt applies a function to parts of the data at any position in a Tree object.
• TreeMapAt[f,tree,{i,j,}] applies the function f to the data at position {i,j,}.
• TreeMapAt can use the position specifications returned by TreePosition as well as extended forms as used in functions such as TreeInsert and TreeReplacePart. »
• An individual position specification pos can be given as {part1,part2,}, where part specifications parti include:
•  i the i child -i the i child from the end {i1,i2,…} the list of children with part numbers i1, i2, … All all children m;;n children m through n "key" the child whose key is "key" Key[k] the child with an arbitrary key k TreeLevel[levelspec] the subtrees on levels specified by levelspec TreeCases[pattern] the subtrees with data matching pattern TreeSelect[crit] the subtrees for which crit gives True
• In TreeMapAt[f,tree,{p1,p2,}], {p1,p2,} is interpreted as a list of individual position specifications if all the pi are lists. Otherwise, {p1,p2,} will be taken to be an individual position specification. »
• TreeMapAt works on trees containing an Association of subtrees, using the same specification for keys as in Part. »
• TreeMapAt applies f repeatedly to a particular position if that position is mentioned more than once in the list of positions. »
• TreeMapAt[f,pos][tree] is equivalent to TreeMapAt[f,tree,pos].
• TreeMapAt has the same options as Tree.

# Examples

open allclose all

## Basic Examples(3)

Map f at the data of the second child of a tree:

Map at any position:

Map at several positions:

Use the operator form of TreeMapAt:

## Scope(14)

### Part Specifications(9)

Map at the third child:

Map at the second child from the end:

Map at all children:

Map at odd positions:

Use Key to specify position:

For string keys, Key is not needed:

Map on a range of levels:

Map at data matching a pattern:

Map at subtrees with exactly two children:

Map using different specifications:

### Associations(5)

Map onto a tree containing an association by key:

If the key is a string, the Key wrapper is optional:

Map onto a tree containing an association by key:

Map onto a tree containing an association by position:

Map at several subtrees of a tree containing an association:

Map at a nested subtree of a tree containing an association:

Map at several nested subtrees of a tree containing an association:

## Properties & Relations(8)

TreeMap[f,tree,levelspec] is equivalent to TreeMapAt[f,tree,TreeLevel[levelspec]]:

Construct a tree from the heads in an expression:

TreeMapAt maps at the data of subtrees of a tree:

This corresponds to mapping at the heads and leaves in an expression:

MapAt can map at the heads and leaves directly:

If pos is not a list, pos and {pos} are equivalent specifications:

TreeMapAt[f,tree,{{i1,j1,},{i2,j2,},}] is equivalent to @TreeMapAt[f,{i2,j2,}]@TreeMapAt[f,{i1,j1,}]@tree:

This extends to the empty list:

Mapping at position {} applies the function to the data of the root node:

TreeMapAt applies f repeatedly if a position is mentioned repeatedly:

TreeMapAt can use the lists of positions returned by TreePosition:

This is the data returned by TreeExtract:

TreeMapAt[f,tree,{p1,p2,}] treats {p1,p2,} as a list of individual position specifications if all the pi are lists:

For {{1,2},{3,4}}, the data at positions {1,2} and {3,4} is modified:

If any pi is not a list, {p1,p2,} is treated as a list of part specifications:

For {{{1,2},{3,4}}}, parts 3 and 4 of parts 1 and 2 are modified:

## Possible Issues(2)

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

TreeMapAt[f,tree,{{}}] maps f at position {}, which corresponds to the root node:

A list of lists in the second argument is always interpreted as a list of position specifications:

As a result, specifications that are equivalent in Part may be treated differently by TreeMapAt:

Use a list of lists if consistency between Part and TreeMapAt is needed:

Wolfram Research (2021), TreeMapAt, Wolfram Language function, https://reference.wolfram.com/language/ref/TreeMapAt.html (updated 2023).

#### Text

Wolfram Research (2021), TreeMapAt, Wolfram Language function, https://reference.wolfram.com/language/ref/TreeMapAt.html (updated 2023).

#### CMS

Wolfram Language. 2021. "TreeMapAt." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2023. https://reference.wolfram.com/language/ref/TreeMapAt.html.

#### APA

Wolfram Language. (2021). TreeMapAt. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/TreeMapAt.html

#### BibTeX

@misc{reference.wolfram_2024_treemapat, author="Wolfram Research", title="{TreeMapAt}", year="2023", howpublished="\url{https://reference.wolfram.com/language/ref/TreeMapAt.html}", note=[Accessed: 24-June-2024 ]}

#### BibLaTeX

@online{reference.wolfram_2024_treemapat, organization={Wolfram Research}, title={TreeMapAt}, year={2023}, url={https://reference.wolfram.com/language/ref/TreeMapAt.html}, note=[Accessed: 24-June-2024 ]}