小的 ggplot 对象 (1 mb) 保存后变成 7 GB 的 .Rdata 对象
small ggplot object (1 mb) turns into 7 gigabyte .Rdata object when saved
我有一系列 ggplot 对象,我试图将它们保存到 .rdata 文件中,以便稍后加载到 Markdown 文档中。 ggplot 对象本身非常小(几 KB)。但是,当我尝试将对象保存为 .rdata 文件以供以后检索时,生成的 .rdata 文件现在超过 8 GB。我试过直接从 GUI 保存绘图,保存为 .rds...保存为 .pdf 或其他图像会生成几 KB 的普通图像。
我很困惑,有没有其他人遇到过这个问题?
下面的示例工作流程,我无法为该问题提供可重现的代码,因为我无法上传制作此图所需的数据框
mcmsy<- (ggplot(data = subset(MonteCarlo, Policy == 'RBFM' &
Year == BaselineYear), aes(MSY), alpha = 0.8) + geom_density(fill = 'steelblue2'))
object.size(mcmsy)
save(mcmsy, file = 'mcmsy_plot.rdata')
我也偶然发现了这个问题。这确实与环境有关。如果您想将绘图保存为 Rdata
文件,那么您应该在生成绘图的函数内创建一个新环境,这样就不会保存完整的环境。示例:
makePlot <- function(plot.data){
env <- new.env(parent = globalenv())
env$subset <- plot.data
my.plot <- with(env, {
my.plot <- ggplot(subset, ...)
return(my.plot)
})
return(my.plot)
}
我有一系列 ggplot 对象,我试图将它们保存到 .rdata 文件中,以便稍后加载到 Markdown 文档中。 ggplot 对象本身非常小(几 KB)。但是,当我尝试将对象保存为 .rdata 文件以供以后检索时,生成的 .rdata 文件现在超过 8 GB。我试过直接从 GUI 保存绘图,保存为 .rds...保存为 .pdf 或其他图像会生成几 KB 的普通图像。
我很困惑,有没有其他人遇到过这个问题?
下面的示例工作流程,我无法为该问题提供可重现的代码,因为我无法上传制作此图所需的数据框
mcmsy<- (ggplot(data = subset(MonteCarlo, Policy == 'RBFM' &
Year == BaselineYear), aes(MSY), alpha = 0.8) + geom_density(fill = 'steelblue2'))
object.size(mcmsy)
save(mcmsy, file = 'mcmsy_plot.rdata')
我也偶然发现了这个问题。这确实与环境有关。如果您想将绘图保存为 Rdata
文件,那么您应该在生成绘图的函数内创建一个新环境,这样就不会保存完整的环境。示例:
makePlot <- function(plot.data){
env <- new.env(parent = globalenv())
env$subset <- plot.data
my.plot <- with(env, {
my.plot <- ggplot(subset, ...)
return(my.plot)
})
return(my.plot)
}