ReplaceAt
ReplaceAt[expr,rules,n]
rules を使って 番目の要素を置換することで expr を変形する.
ReplaceAt[expr,rules,{i,j,…}]
expr の位置{i,j,…}の部分を置換する.
ReplaceAt[expr,rules,{{i1,j1,…},{i2,j2,…},…}]
複数の位置の部分を置換する.
詳細
- ReplaceAtは,通常,与えられた置換規則に基づいて,式の一つまたは複数の要素を変更するために使われる.
- ReplaceAt[expr,rules,{i,j,…}]は rules を使って部分 expr[[i,j,…]]を置換する.
- ReplaceAt[expr,rules,{{i1,j1,…},{i2,j2,…},…}]は rules を使って部分 expr[[i1,j1,…]], expr[[i2,j2,…]], … を置換する.
- 規則は lhs->rhs または lhs:>rhs の形,あるいはそのような形のリストでなければならない.
- 規則のリストを与えることができる.規則は順に試される.適用された最初の規則の結果が返される. 規則がどれも適用されなけれもとの式 expr が返される.
- ReplaceAt[expr,patt:>new,pos]を使って部分を評価せずに置換できる.pattnew のような規則の場合は new が patt にマッチする各式について別々に評価される.
- ReplaceAtは,ある部分が位置のリストで2回以上言及されている場合はその部分に置換規則を繰り返し適用する.
- ReplaceAtが使う位置のリストは関数Positionが返すものと同じ形である.
- ReplaceAtは,Partにおけるのと同じキー指定を使ってAssociationオブジェクトに使うことができる.
- expr がSparseArrayオブジェクトあるいは構造化配列なら,ReplaceAt[expr,…]は対応する通常配列の部分を置換する.
- ReplaceAt[rules,pos][expr]はReplaceAt[expr,rules,pos]に等しい.
例題
すべて開くすべて閉じる例 (9)
スコープ (6)
一般化と拡張 (4)
特性と関係 (7)
ReplaceAtはPositionが返す部分のリストを使うことができる:
次は,Extractが返した部分式である:
ReplaceAtは置換規則にAssociationを使うことができる:
ReplaceAtは置換規則にDispatchオブジェクトを使うことができる:
ReplaceAtは,部分が繰り返し言及されている場合は置換規則を繰り返し適用する:
ReplaceAtはホールドされた置換は評価しない:
Unevaluatedを使って expr の評価前に置換を行う:
考えられる問題 (1)
式の構造が置換の間に変化することが予想されるなら,繰り返される置換部分は思いがけない結果をもたらすかもしれない:
Nestを使った場合と比較する:
この動作はReplacePartとMapAtにも共通する:
テキスト
Wolfram Research (2022), ReplaceAt, Wolfram言語関数, https://reference.wolfram.com/language/ref/ReplaceAt.html.
CMS
Wolfram Language. 2022. "ReplaceAt." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/ReplaceAt.html.
APA
Wolfram Language. (2022). ReplaceAt. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ReplaceAt.html