在 RStudio Server 中共享内存数据
Sharing in memory data in RStudio Server
我正在尝试确定我是否能够使用 RStudio 将数据保存在内存中以供多个会话使用,或者至少保留会话。事实证明,搜索有关此功能 existence/nonexistence 的信息具有挑战性。
测试是这样的:
- 在与 RStudio 的会话中创建一个变量并为其赋值。
- 在另一个会话中 运行 引用该变量的脚本。
如果为变量分配了一个值,则脚本将运行,否则它将失败并显示“错误:未找到对象 变量。
是否可以在 Rstudio Server 中创建一个跨会话变量,该变量将在不涉及文件的情况下使用此过程 i/o?或者它只是作为服务器功能不可用?
不幸的是,由于 R 本身的设计方式,这是不可能的。
每个 R 会话都有自己的私有内存 space,其中包含值和数据(该会话的全局环境等)。
为了创建跨会话变量,R 会话必须共享内存,并且它们还必须协调对该内存的访问,这样(例如)如果一个会话正在更改变量,另一个会话在第一个会话完成更改之前无法读取该值。这种协调机制在 R 中是不存在的。
如果您想这样做,有几个解决方法:
将您的数据保存在两个会话都可以安全读取和写入的地方,例如在数据库中,或者
如您所述,吸引人的文件 I/O 是一种选择,但这并不难:使用 .Rdata 文件;当您希望将数据发布到其他会话时,将私有变量写入 R 数据文件(使用例如 save
),当其他会话希望同步时,它可以将数据加载到自己的私有 [=31] =](使用例如 load
)。
我正在尝试确定我是否能够使用 RStudio 将数据保存在内存中以供多个会话使用,或者至少保留会话。事实证明,搜索有关此功能 existence/nonexistence 的信息具有挑战性。
测试是这样的:
- 在与 RStudio 的会话中创建一个变量并为其赋值。
- 在另一个会话中 运行 引用该变量的脚本。
如果为变量分配了一个值,则脚本将运行,否则它将失败并显示“错误:未找到对象 变量。
是否可以在 Rstudio Server 中创建一个跨会话变量,该变量将在不涉及文件的情况下使用此过程 i/o?或者它只是作为服务器功能不可用?
不幸的是,由于 R 本身的设计方式,这是不可能的。
每个 R 会话都有自己的私有内存 space,其中包含值和数据(该会话的全局环境等)。
为了创建跨会话变量,R 会话必须共享内存,并且它们还必须协调对该内存的访问,这样(例如)如果一个会话正在更改变量,另一个会话在第一个会话完成更改之前无法读取该值。这种协调机制在 R 中是不存在的。
如果您想这样做,有几个解决方法:
将您的数据保存在两个会话都可以安全读取和写入的地方,例如在数据库中,或者
如您所述,吸引人的文件 I/O 是一种选择,但这并不难:使用 .Rdata 文件;当您希望将数据发布到其他会话时,将私有变量写入 R 数据文件(使用例如
save
),当其他会话希望同步时,它可以将数据加载到自己的私有 [=31] =](使用例如load
)。