首页 > 解决方案 > R中的替换函数

问题描述

我在他的书网站上阅读了 Hadley Wickham 的 Advanced R。我在R中发现了一个关于替换函数的问题。下面的结果是根据他的书给出的。

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

x[2] <- 7L
address(x)
#> [1] "0x103945110"

他认为如果我们只替换 x 的第二个元素,x 的地址不会改变。但是,当我这样做时, x 的物理地址实际上发生了变化。所以,有人告诉我为什么吗?

标签: r

解决方案


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)

你应该得到相同的地址。现在1:10它没有完全扩展,直到它必须是。并且更改向量内的元素将导致它扩展。


推荐阅读