Ответ 1
R достаточно умен, чтобы не сделать копию, если переменная такая же, поэтому просто перейдите, переназначьте и rm()
оригинал.
Пример:
x <- 1:10
tracemem(x)
# [1] "<0000000017181EA8>"
y <- x
tracemem(y)
# [1] "<0000000017181EA8>"
Как мы видим, оба объекта указывают на один и тот же адрес. 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>"
Связанная запись: Как переименовать объект R?