R言語で2つのオブジェクトが同一かどうかをテストする方法はありますか?
明確にするために:identical
数値や論理値などの特定のプロパティに基づいてオブジェクトを比較する、関数の意味での同一を意味するものではありません。
オブジェクト ID に非常に興味があります。たとえばis
、Python 言語の演算子を使用してテストできます。
更新address(x)
: (を使用しない)のより堅牢で高速な実装がdata.table v1.8.9.Internal(inspect(x))
に追加されました。NEWSより:
新しい関数
address()
は、その引数の RAM 内のアドレスを返します。値が 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
。