如何解决R 保存大小非常不同的相似对象会导致文件大小相同
我在保存 dist-class
对象(使用 saveRDS
)和获得比预期大得多的文件时遇到问题。可以在 https://github.com/kstagaman/stackoverflow-help
下面读取了一个 phyloseq 对象,其中包含一个非常大的社区矩阵 (47 x 1,060,929)
library(phyloseq)
obj.size <- function(x) {paste("Object size:",format(object.size(x),units = "auto"))}
f.size <- function(x) {paste("File size:",round(file.size(x) / 1024^2,1),"Mb")}
ps <- readRDS("example_phyloseq.rds")
接下来,我创建了一个距离矩阵来确定社区差异 样本之间应该产生一个 47 x 47 的矩阵
dist.mat <- phyloseq::distance(ps,method = "bray") # creating a distance matrix
attributes(dist.mat)$Size
## [1] 47
好的,正如预期的那样,但是……
cat(obj.size(dist.mat),sep = "\n")
## Object size: 453.3 Mb
对于这种大小的距离矩阵来说,这出奇地大(比如 量级更大)
经过调查我意识到这是因为
attributes(dist.mat)$call
很大,因为它包括每一个
来自原始社区矩阵的值。
dist.mat.small <- dist.mat
attributes(dist.mat.small)$call <- NULL
cat(obj.size(dist.mat.small),sep = "\n")
## Object size: 12.5 Kb
好的,看起来不错。更接近我对 尺寸。但是……当我尝试保存时……
saveRDS(dist.mat,file = "distance_matrix_original.rds")
saveRDS(dist.mat.small,file = "distance_matrix_small.rds")
cat(f.size("distance_matrix_original.rds"),sep = "\n")
## File size: 112.5 Mb
cat(f.size("distance_matrix_small.rds"),sep = "\n")
## File size: 112.5 Mb
这里发生了什么?为什么对象的文件大小相同 大小不一样?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。