在R的背景中运行工作

时间:2013-08-22 10:25:35

标签: r

我正在使用250 x 250矩阵。但是,计算这个需要花费很多时间。至少需要一个小时。

我是否有可能将此矩阵存储在R中的内存中,这样每次打开R时,它都已存在。

理想情况下,我想知道是否可以在R中运行背景作业,这样我就不必等待一个小时才能将矩阵输出并能够使用它。

3 个答案:

答案 0 :(得分:5)

1)关闭R时可以保存R的工作空间。通常R会问“保存工作区图像?”当你关闭它。如果您回答“是”,它会将工作区保存在名为“.Rdata”的文件中,并在启动新的R实例时加载它。

2)更好的选择(更安全)是明确保存矩阵。有几种选择如何完成。其中一个选项是将其保存为Rdata文件:

save(m, file = "matrix.Rdata")

其中m是您的矩阵。

您可以随时使用

加载矩阵
load("matrix.Rdata")

如果你在同一个工作目录上。

3)R没有像背景计算这样的选项。但是你可以打开几个R实例。在一个实例中进行计算,并在其他实例上执行其他操作。

答案 1 :(得分:2)

在计算文件时将其输出到文件然后在每次打开R时解析该文件会有所帮助。自己编写一个computeMatrix()函数或脚本来生成一个文件,其中矩阵以合理的格式存储。另外写一个loadMatrix()函数或脚本来读取该文件并将矩阵加载到内存中以供使用,然后每次启动R时调用或运行loadMatrix并希望使用矩阵。

在后台运行R作业方面,您可以从命令行运行R脚本,语法为“R CMD BATCH scriptName”,脚本名称替换为脚本名称。

答案 2 :(得分:-1)

使用ff包并将矩阵保存为ff对象可能更好。这意味着实际矩阵将以有效的方式保存在磁盘上,然后当您启动新的R会话时,您可以指向同一个文件而无需将整个矩阵加载到内存中。当您需要矩阵的一部分时,只会加载您需要的部分,因此它会更快。即使您需要将整个矩阵加载到内存中,它也应该比读取文本文件更快地加载。