Подтвердить что ты не робот

Идентификатор объекта R

Есть ли способ проверить, идентичны ли два объекта на языке R?

Для ясности: Я не имею в виду идентичность в смысле функции identical который сравнивает объекты на основе определенных свойств, таких как числовые значения или логические значения и т.д.

Мне действительно интересен идентификатор объекта, который, например, может быть протестирован с помощью оператора is на языке Python.

4b9b3361

Ответ 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.

Ответ 2

Вы можете использовать пакет pryr.

Например, верните расположение памяти объекта mtcars:

pryr::address(mtcars)

Затем для переменных a и b вы можете проверить:

address(a) == address(b)