我使用bigmemory
包将一个非常大的矩阵放到共享内存中(请参见下面的脚本,这样它就可以被其他R会话中的脚本并行访问。
现在我想以非交互方式执行脚本。问题是,如果我用Rscript
运行它,矩阵会在Rscript
进程结束后立即从共享内存中删除。我可以将Sys.sleep(99999)
添加到脚本末尾,但我想知道是否有更好的方法来实现这一点。有什么想法吗?
library(bigmemory)
m = read.big.matrix("matrix.txt", type='double', shared = TRUE, header = FALSE, sep = "\t")
sign = describe(m)
dput(sign, "matrix.signature")
2条答案
按热度按时间e4eetjau1#
如果磁盘上有描述符
sign
,则可以在另一个会话中使用attach.big.matrix()
:igetnqfo2#
只要矩阵连接到至少一个R会话中,它就会保留在RAM的一个隔离部分中。防止矩阵丢失的最佳做法是将其归档。这不会影响性能,但您必须注意,在硬盘驱动器上的指定位置,这些数据会一直驻留在那里,直到你显式地删除它们。2即使关闭所有的R会话也不会删除它们。3在这种情况下终结器是不活动的。