有没有办法在 R 语言中测试两个对象是否相同?
为清楚起见:我并不是指identical
函数意义上的相同,它根据某些属性(如数值或逻辑值等)比较对象。
我对对象标识非常感兴趣,例如可以使用is
Python 语言中的运算符对其进行测试。
更新:在data.table v1.8.9中添加了一个更健壮和更快的address(x)
(不使用.Internal(inspect(x))
)实现。来自新闻:
新函数
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
您可以通过更改17
为9
.