我有一个名为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。
答案 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
个对象包含类AssayData
的assayData
个插槽,它被描述为“容器类,被定义为list
和{{1}的类联合}”。虽然我的计算机上没有安装 eset ,但我认为environment
和assayData
的{{1}}个插槽会引用不同的环境,从而导致eset
返回e2
。