首页 > 解决方案 > 就地修改优化似乎不适用于具有单个绑定的对象

问题描述

根据 Hadley Wickham 的Advanced R,具有单个绑定的对象在修改时不应被复制(第 2.5.1 章)。但是,在我的系统上,我看不到在这种情况下应用了就地修改优化

x <- c(1,2,3)
tracemem(x)
#> "<0x10c3b16f8>"
x[[3]] <- 4
#> tracemem[0x10c3b16f8 -> 0x10b9305a8]:

也就是说,x当它被修改时不应该被复制x[[3]] <- 4

我怎么了?为什么 R 在这个例子中不使用就地修改优化?

编辑:添加会话信息

R version 3.5.0 (2018-04-23)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Sierra 10.12.5

Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] lobstr_0.0.0.9000

loaded via a namespace (and not attached):
[1] compiler_3.5.0   tools_3.5.0      yaml_2.2.0       Rcpp_1.0.0       rlang_0.3.0.9000

标签: r

解决方案


推荐阅读