每当我们尝试更改其值时,R语言对象是否会解决更改?

时间:2017-06-24 07:11:58

标签: r

执行以下操作时,只要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)

有什么原因吗?感谢。

1 个答案:

答案 0 :(得分:1)

Hadley的Advanced R书(特别是关于记忆的章节)可能是一个很好的资源来帮助解释。

特别是,以下内容:

  

当refs(x)为1时,将进行修改。当refs(x)是   2,R将复制(这确保了其他指向对象的指针)   保持不受影响。)

您遇到的是R是“复制修改”并创建新引用的设置。正如本章所解释的那样,有些情况下R将在修改时复制,并且会在适当的位置进行修改。