r - 为什么对象在保存/加载到/从 RData 后变得不同?

标签 r object load save rdata

我有一个大 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 ,它被描述为“定义为 listenvironment 的类联合的容器类”。虽然我没有 eset 安装在我的电脑上,我猜是 assayData eset 的插槽和 e2引用不同的环境,导致identical(eset, e2)返回 FALSE .

关于r - 为什么对象在保存/加载到/从 RData 后变得不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15687552/

相关文章:

r - 使用 ggplot 绘制列表对象

R:并行 makePSOCKcluster 挂起

java - 将 null 传递给首选 String 而不是 Object 的方法

javascript - D3 - 如何使用条形图的键循环对象

r - 如何删除R中包含少于3行数据的组?

r - 在\include 图形之后编织空行

javascript - 数组在 Nodejs 和浏览器中的行为不同

jquery - 在加载时使用 jquery 确定元素的大小。单击后退按钮时不起作用

javascript - jquery 在 document.ready() 之外定义对象

javascript - Jquery .load() 不适用于 IE