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:
  • ithe i^(th) child
    -ithe i^(th) child from the end
    {i1,i2,}the list of children with part numbers i1, i2,
    Allall children
    m;;nchildren 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_2023_treemapat, author="Wolfram Research", title="{TreeMapAt}", year="2023", howpublished="\url{https://reference.wolfram.com/language/ref/TreeMapAt.html}", note=[Accessed: 28-March-2024 ]}

BibLaTeX

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