15

R言語で2つのオブジェクトが同一かどうかをテストする方法はありますか?

明確にするために:identical数値や論理値などの特定のプロパティに基づいてオブジェクトを比較する、関数の意味での同一を意味するものではありません。

オブジェクト ID に非常に興味があります。たとえばis、Python 言語の演算子を使用してテストできます。

4

2 に答える 2

28

更新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

于 2012-06-06T11:27:43.233 に答える