R中的替换功能

Tra*_*vis 5 r

我在他的书的网站上读过Hadley Wickham的Advanced R. 我在R中找到了关于替换函数的问题.根据他的书给出了以下结果.

library(pryr)
x <- 1:10
address(x)
#> [1] "0x103945110"

x[2] <- 7L
address(x)
#> [1] "0x103945110"
Run Code Online (Sandbox Code Playgroud)

如果我们只是替换x的第二个元素,他认为x的地址不会改变.但是,当我这样做时,x的物理地址实际上已经改变了.那么,有谁告诉我为什么?

MrF*_*ick 4

R 3.5 在表单中存储值的方式a:b发生了变化。如果您尝试使用相同的示例

library(pryr)
x <- c(1,2,3,4,5,6,7,8,9,10)
address(x)
x[2] <- 7L
address(x)
Run Code Online (Sandbox Code Playgroud)

您应该获得相同的地址。现在1:10直到必要时才完全扩展。更改向量内的元素将导致其扩展。