保存/加载到RData之后为什么对象变得不同?

时间:2013-03-28 16:45:58

标签: r object load save rdata

我有一个名为eset的大型ExpressionSet对象(Bioconductor)。你能解释一下为什么会这样吗?为什么保存/加载后对象的副本与原始副本不同?

> e2=eset
> identical(e2,eset)
[1] TRUE
> save(e2,file="test.RData")
> rm(e2)
> e2 # just to check the removal
Error: object 'e2' not found
> load("test.RData")
> identical(e2,eset)
[1] FALSE

还有其他方法可以检查两个对象的身份吗?

如果需要,我在Windows 7下使用R 2.15.1。

1 个答案:

答案 0 :(得分:7)

环境是少数R对象类型之一(连接是另一种),保存和加载不是完全相反的。

e <- new.env()
f <- e
identical(e,f)
# [1] TRUE
save("f", file="f.Rdata")
rm(f)
load("f.Rdata")
identical(e,f)
# [1] FALSE

ExpressionSet个对象包含类AssayDataassayData个插槽,它被描述为“容器类,被定义为list和{{1}的类联合}”。虽然我的计算机上没有安装 eset ,但我认为environmentassayData的{​​{1}}个插槽会引用不同的环境,从而导致eset返回e2