【发布时间】:2012-07-09 08:58:36
【问题描述】:
这不是家庭作业,只是我的学习练习。我一直在 R 中运行一个非常简单的模拟(或数字曲柄)。它生成两个数字(A,B)并运行 1 个月。
A=NULL
B=NULL
x=NULL
x <- Sys.time()
duration <- 2592000 # 30 days
while(Sys.time() <= x + duration){
A <-append(A, sample(1:5, 1000, 1/5))
B <-append(B, sample(1:5, 1000, 1/5))
save.image()
}
我认为它进展顺利,但一周后(产生了数百万个数字),操作系统终止了该进程。 有没有更好的方法来编写或运行模拟来防止操作系统杀死它?
我宁愿重写模拟而不是适应操作系统(例如添加更多交换等)。我在低功率设备(Raspberry Pi)上运行模拟,并且在硬件方面我能做的事情有限。谢谢。
更新:
1) 一次生成 1000 个样本并不重要。这只是我的笨拙。
2) 模拟运行一段时间(即 1 周、1 个月或 1 年)很重要。
3) 除非不可能,否则我想要原始数据。
【问题讨论】:
-
我的猜测是它溢出了你的记忆。
-
这对我来说很难重现。 :) 进程被杀死时是否有任何错误消息?您是否监控内存使用情况?写入单个 (txt) 文件不是也有意义吗?
-
我的猜测是,通过附加越来越大的向量,您的系统不喜欢 something。我会通过生成一个大向量来解决这个问题,然后将其写入(附加 = TRUE)到单个文本文件或数据库中。
-
我的建议是你在每个循环中总结你的数据,然后将总结保存到磁盘。这应该可以防止出现可寻址空间(内存或磁盘)不足的问题。
-
@plannapus 那是另一个部门的问题。 :) 分析大数据的一种方法是将其抽样成可管理的部分。如果你有一个有代表性的样本,那么 1000 个点就相当于 10 亿个。如果将其存储到数据库中,R 中有很多工具可以处理这类计算。
标签: r simulation