在RStudio Server中共享内存数据

时间:2016-02-12 00:36:29

标签: r rstudio rstudio-server

我正在尝试确定我是否能够将数据保存在内存中,使用多个会话来使用RStudio,或者至少保留会话。搜索有关此功能存在/不存在的信息已证明具有挑战性。

测试是这样的:

  1. 在与RStudio的会话中创建一个变量并为其赋值。
  2. 在另一个会话中运行一个引用该变量的脚本。
  3. 如果为变量分配了值,那么脚本将起作用,否则会失败并显示"错误:找不到对象变量

    是否可以在Rstudio服务器中创建一个跨会话变量,该变量可以在不使用文件i / o的情况下使用此过程?或者它只是作为服务器功能不可用?

1 个答案:

答案 0 :(得分:1)

不幸的是,由于R本身的设计方式,这是不可能的。

每个R会话都有自己的私有内存空间,其中包含值和数据(该会话的全局环境等)。

为了创建跨会话变量,R会话必须共享内存,并且他们还必须协调对该内存的访问,以便(例如)如果一个会话正在更改变量的值,在第一个会话完成更改之前,另一个会话无法读取该值。 R中不存在这种协调机制。

如果你想这样做有几个解决方法:

  1. 将您的数据保存在两个会话都能安全读取和写入的位置,例如在数据库中,或

  2. 正如您所提到的,引用文件I / O是一种选择,但这并不难:使用.Rdata文件;当您希望将数据发布到其他会话时,将私有变量写为R数据文件(使用例如save),当另一个会话希望同步时,它可以将数据加载到其自己的私有空间中(使用例如load)。