执行以下操作时,只要x值发生变化,就会改变地址。
library(pryr)
x <- x + 10
address(x)
tracemem(x)
x <- x + 10
address(x)
tracemem(x)
x <- x + 10
address(x)
tracemem(x)
x <- x + 10
address(x)
tracemem(x)
有什么原因吗?感谢。
答案 0 :(得分:1)
Hadley的Advanced R书(特别是关于记忆的章节)可能是一个很好的资源来帮助解释。
特别是,以下内容:
当refs(x)为1时,将进行修改。当refs(x)是 2,R将复制(这确保了其他指向对象的指针) 保持不受影响。)
您遇到的是R
是“复制修改”并创建新引用的设置。正如本章所解释的那样,有些情况下R
将在修改时复制,并且会在适当的位置进行修改。