私は今日リストのリストを使っていて、2番目のレベルのリストの1つの要素を置き換える必要がありました。これを行う方法は明白でしたが、なぜそれが効果的であるかについてはっきりしていないことに気付きました。このデータ構造を考えるとネストされた置換演算子はどのように機能しますか?
a <- list(aa=list(aaa=1:10,bbb=11:20,ccc=21:30),bb=list(ddd=1:5))
、のは、私は、ネストされた数値ベクトルのAAAの第三の要素を交換したいとしましょう:
は、ここでの例です。
newvalue <- 100
a$aa$aaa[3] <- newvalue
これを行うことは明らかですが、この表現がどのように評価されるのか自分自身に説明することはできませんでした。 (1)トップレベル関数呼び出しを作成し、提出する
:引用機能での作業、私はの線に沿って、一緒にいくつかの大まかなロジックを石畳
`<-`(a$aa$aaa[3],newvalue)
(2)最初の引数の遅延評価を(1)、通話機能に '[':
`[`(a$aa$aaa,3)
(3)recursivleyダウン進み:
`$`(a$aa,"aaa")
(4)...ダウンさらに、再び「$」を呼び出します。
`$`(a,"aa")
(5)(4)実際のデータ構造を返すと、「スタックアップ」バック進むまで、返されたデータ構造を代入実際の割り当ては(1)で行われます。
私の混乱は、怠惰な評価や評価環境のいくつかの側面が関係していると思います。上記の例では、ベクトルの1つの要素を単純に再割り当てしました。しかし、Rはそのベクトルがより大きなデータ構造のどこにあるのかを把握していますか?
乾杯
私はこのことが不思議です[回答](http://stackoverflow.com/questions/6437769/why-does-item-assignment-in-non-existant-data-frame-column-work/6440706#6440706)助けて? –