我正在尝试构建一个使用函数生成多个ggplot2对象的R项目.但是,我注意到,将这些对象保存为RDS文件时,文件大小比我预期的要大得多.我意识到,保存使用函数生成的RDS对象以及全局环境中的相同图,尽管在R会话中占用了相同的内存,但仍会提供两种截然不同的文件大小.例如:
library(ggplot2)
data <- data.frame(x = rnorm(1e6))
p1 <- ggplot(data) +
geom_histogram(aes(x = x))
plot_fun <- function(y) {
p <- ggplot(y) +
geom_histogram(aes(x = x))
return(p)
}
p2 <- plot_fun(data)
object.size(p1) # 8 Mb
object.size(p2) # 8 Mb
saveRDS(p1, "plot1.rds")
saveRDS(p2, "plot2.rds")
file.info("plot1.rds", "plot2.rds")
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么会这样?我是否从函数中错误地返回了对象?