在R中,我能否将已加载的包与工作区一起保存?

6

R通常只会将对象保存在.GlobalEnv中:

$ R
> library(rjson)
> fromJSON
function (...) ...
> q(save='yes')
$ R
> fromJSON
Error: object 'fromJSON' not found

有没有办法也保存这些信息?
4个回答

5

现在您可以将R会话信息保存到文件中并在另一个会话中加载它。

首先安装“session”软件包:

install.packages('session')

加载您的库和数据,然后将会话状态保存到文件中:

library(session)
library(ggplot2) # plotting

test <- 100

save.session(file='test.Rda')

然后,在另一个会话中可以加载会话状态:

library(session)

restore.session(file='test.Rda')

#ggplot2 (and associated data) should have loaded with the session data
head(diamonds)
ggplot(data = diamonds, aes(x = carat)) +
  geom_histogram()

print(test)

参考资料: https://www.rdocumentation.org/packages/session/versions/1.0.3/topics/save.session

这是一个关于保存R session的函数。在数据分析中,经常需要保存当前的session,以便下次恢复工作环境。 该函数可以将session保存到指定的文件路径中,并在需要时重新载入所保存的session。

5
据我所知,不行。工作空间是用于数据和函数等对象的。启动R并加载特定包是您的.Rprofile文件的作用,您可以在每个目录中拥有不同的文件。
您可以将加载所需包的函数保存在工作空间中,然后在首次启动R时运行该函数。

2

您可以使用检查点程序,例如DMTCP来保存整个R进程并在以后重新启动它。


2
我建议不要在r会话之间保存任何东西,而是使用代码重新创建所有内容。这样更有可能产生可重复的结果。

2
没错,我总是尽力把所有东西都编成可以直接运行的代码,只不过当脚本变得越来越长时,重复运行它们会变得很慢。 - Owen
1
还要注意包的包含顺序,因为其中一个对象可能会掩盖另一个对象。 - smci

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接