我有一个大 ExpressionSet对象 ( Bioconductor ) 命名为 eset
.你能解释为什么会发生这种情况吗?为什么保存/加载后对象的副本与原始副本不同?
> 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。
最佳答案
环境是少数 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
和 environment
的类联合的容器类”。虽然我没有 eset 安装在我的电脑上,我猜是 assayData
eset
的插槽和 e2
引用不同的环境,导致identical(eset, e2)
返回 FALSE
.
关于r - 为什么对象在保存/加载到/从 RData 后变得不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15687552/