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