考虑:
library(igraph)
g <- make_ring(3)
identical(g, g) # TRUE as expected
# [1] TRUE
dput(E(g))
# structure(1:3, is_all = TRUE, class = "igraph.es", env = <weak reference>, graph = "4f82a4da-3975-11ef-8958-675a79d1d14f")
E(g) == E(g) # test equality.
# [1] TRUE TRUE TRUE
all.equal(E(g), E(g)) # Next try.
# [1] TRUE
identical(E(g), E(g), ignore.environment = FALSE) # Expecting TRUE.
# [1] FALSE
identical(E(g), E(g), ignore.environment = TRUE) # Expecting TRUE.
# [1] FALSE
问题:为什么是假的?
我推测
identical
会给出 False
,因为 E(g)
在第一次和第二次调用之间被分配了不同的地址,例如
> library(data.table)
> address(E(g))
[1] "000001a51697f368"
> address(E(g))
[1] "000001a516666e68"