Ответ 1
UPDATE. Более надежная и быстрая реализация address(x)
(не использующая .Internal(inspect(x))
) была добавлена в data.table v1.8.9. Из NEWS:
Новая функция
address()
возвращает адрес в ОЗУ своего аргумента. Иногда полезно при определении того, было ли значение скопировано или нет с помощью программы R.
Там, вероятно, более аккуратный способ, но это, похоже, работает.
address = function(x) substring(capture.output(.Internal(inspect(x)))[1],2,17)
x = 1
y = 1
z = x
identical(x,y)
# [1] TRUE
identical(x,z)
# [1] TRUE
address(x)==address(y)
# [1] FALSE
address(x)==address(z)
# [1] TRUE
Вы можете изменить его для работы на 32 бит, изменив 17
на 9
.