Rは、関数に引数を渡したり、変数のコピーを作成したりする際に、メモリ使用量に関して使用するロジックを理解したいと思います。実際に変数のコピーを作成するのはいつですか?その変数への参照を渡すだけですか?特に、私は好奇心午前の状況は以下のとおりです。深い対浅いコピー、参照渡し
f <- function(x) {x+1}
a <- 1
f(a)
は文字通り渡されるa
ですか渡されるへの参照ですか?
x <- 1
y <- x
コピーの参照?これはいつですか?
誰かが私にこれを説明できるなら、私は非常に感謝します。
-lang.html#Evaluation)のセクションを参考にしてください。 – joran
Morandatとその同僚のこの論文は、Rの引数の遅延評価に関する興味深く重要な議論をしています。http://www.cs.purdue.edu/homes/jv/pubs/ecoop12.pdf – jthetzel
'tracemem'を適切に使うコンパイルされたRは 'NAM'EDフィールドを理解した' .Internal(inspect(x)) 'と同様に探査に役立ちます。私の一般的なマントラは 'copy-on-change'なので、元のものに変更がないので、 'y < - x'はコピーをトリガしません。' x'(と ' y ")は、いずれかの修正によってコピーがトリガーされるように、「命名」される。 –