如何重命名R中的变量而不复制对象?

Kun*_*Ren 33 r

我在R命名的全局环境中加载了一个巨大的数据框df.如何重命名数据框而不复制数据框,方法是将其分配给另一个符号并删除原始符号?

evo*_*obe 43

如果变量相同,R很聪明,不能制作副本,所以请继续,重新分配和rm()原始.

例:

x <- 1:10
tracemem(x)
# [1] "<0000000017181EA8>"
y <- x
tracemem(y)
# [1] "<0000000017181EA8>"
Run Code Online (Sandbox Code Playgroud)

我们可以看到两个对象都指向同一个地址.如果其中一个被修改,R在内存中创建一个新副本,即:2个对象不再相同.

# Now change one of the vectors
y[2] <- 3
# tracemem[0x0000000017181ea8 -> 0x0000000017178c68]: 
# tracemem[0x0000000017178c68 -> 0x0000000012ebe3b0]: 
tracemem(x)
# [1] "<0000000017181EA8>"
tracemem(y)
# [1] "<0000000012EBE3B0>"
Run Code Online (Sandbox Code Playgroud)

相关文章:如何重命名R对象?

  • +1,但我认为你可以用一些"证据"强化这个答案(即使使用像`x < - 1:10; tracemem(x); y < - x; tracemem(y); rm(x)这样简单的东西)`. (14认同)
  • 或者`pryr :: address()` (3认同)