# load a single object from an existing workspace
您无法从工作区恢复一个对象。因为save.image(".Rdata")
只是一个简化的命令save(list = ls(all=TRUE), file= ".RData")
。当您使用load
命令时,您可以从该列表中恢复所有对象。
但是,您可以保存合并到列表中的几个对象,然后加载它们。例如:
library(ggplot2)
c <- ggplot(mtcars, aes(factor(cyl)))
d<-c + geom_bar(width=.5) # create two graphs
c<- c + geom_bar()
save(list=c("c","d"),file="myobjects") # save them (notice that objects are accessed as strings)
rm(list = ls()) # remove from the memory
load(file="myobjects") # load again
你现在有你的对象(地块) c 和 d 回来了。这回答了你的最后一个问题。
现在,假设您已经有对象c
并d
在文件中myobjects
,并且您想向该文件添加更多对象。不加载它是不可能的,因为save
和saveRDS
存储压缩的数据(如果save
你得到 tar 包并且saveRDS
你可以选择压缩方法)。如您所知,如果不解包,您无法将数据添加到已归档的文件中。我看到的唯一解决方案是这个。假设我们要添加a
和b
。myobjects
library(ggplot2)
a<-qplot(rnorm(100))
b<-qplot(rnorm(200))
list=ls()
list<-list[-which(list%in%c("a","b"))] # list all variables except the one you want to save
rm(list=list) # we're deleting all except a and b
load(file="myobjects") # loading or unpacking objects c and d
save(list=ls(),file="myobjects") # saving objects a,b,c,d in myobjects file
这是一个粗略的解决方法,但是如果您考虑一下,在 R 中我们得到了数据或绘图对象(出于某种原因,我使用了 ggplot2 示例)。数据可以保存为save.table
,图可以存储到 grobs 列表(包gridExtra
),然后保存为save
.