在Linux

时间:2016-01-17 19:04:08

标签: r bash rscript

我有一系列用于执行多个数据步骤的R脚本 我需要的分析。其中一些需要很长时间才能真正创造 大物件。我注意到,如果我只是连续地(通过main.R脚本)获取所有这些内容,那么 对于后续步骤的处理比我输出一个脚本需要更长的时间,保存 我需要什么,并重新启动R进行下一步(加载我需要的数据)。

我想知道是否有 方式,也许通过RscriptBash脚本,我可以执行此操作。 需要有前两个脚本持续存在的对象(加载 我的外部数据并创建将用于所有进一步的对象 脚步)。我想我也可以保存它们并将它们加载到更多的脚本中。

(我还希望将一些命名参数传递给这个脚本,我认为我可以在其他SO帖子上找到它,并且可以使用类似optparse的内容。)

因此,我认为脚本看起来像这样:

#! /bin/bash
Rscript 01_load.R  # Objects would persist, ideally
Rscript 02_create_graphs.R  # Objects would persist, ideally
Rscript 03_random_graphs.R  # contains code to save objects
#exit R
Rscript 04_permutation_analysis.R  # would have to contain code to load data
#exit

等等。这个问题有方法解决吗?我在64位CentOS 6上使用R 3.2.2。谢谢。

1 个答案:

答案 0 :(得分:0)

克里斯,

听起来你应该使用gc()rm()在你的步骤之间(或之内)做一些人工管理。有关详细信息,请参阅help(gc)help(rm)

因此,您可以执行以下操作,而不是退出R并重新启动它:

rm(list = ls())
gc()

但请注意:rm(list = ls())会丢弃所有物品。最好创建一个合适的对象列表,并将其放在rm()