如何将R变量从一个shell脚本重用到另一个shell脚本?
我有一个R管道在一个大数据集上运行分析。目前,我可以通过从终端调用脚本来启动分析,并为其提供分析参数。如何将R变量从一个shell脚本重用到另一个shell脚本?,r,shell,scripting,global-variables,R,Shell,Scripting,Global Variables,我有一个R管道在一个大数据集上运行分析。目前,我可以通过从终端调用脚本来启动分析,并为其提供分析参数。 $。/my_script.R--参数1 a1--参数2 b1 脚本从.Rds文件加载数据集,但每次启动脚本都需要一分钟以上的时间来加载 是否有一种方法可以将数据集保存在内存中,以便在一行中运行多个分析(意思是$./my_script.R--parameter1 a2--parameter2 b2等)?也许可以利用全球环境? 谢谢 解决该问题的一种方法是允许用户在脚本调用时指定多对参数,以便程序
$。/my_script.R--参数1 a1--参数2 b1
脚本从
.Rds
文件加载数据集,但每次启动脚本都需要一分钟以上的时间来加载
是否有一种方法可以将数据集保存在内存中,以便在一行中运行多个分析(意思是$./my_script.R--parameter1 a2--parameter2 b2
等)?也许可以利用全球环境?谢谢 解决该问题的一种方法是允许用户在脚本调用时指定多对参数,以便程序可以一次迭代所有参数(只需要一次启动成本) 下面是一个示例脚本,它使用了一些东西:
库(optpass)
,以便于参数设置。还有其他的,什么都不需要,我发现这让事情看起来很容易if uuuu name uuuuu=='uuu main uuuu':
技巧,我刚才回答为#/usr/bin/env r
启动您的意思是,在bash提示符下,您调用/my_script.R..
,当它完成时,您将返回bash提示符并希望运行相同的(或不同的)脚本R脚本并使该数据保持驻留状态以便第二个R实例重用?@r2evans是的,就是这样。问题在于:当myscript.R
完成时,R退出。它为计算而请求和分配的内存(以及保存.Rds
文件内容的内存)已被释放并返回到操作系统。如果希望/需要R对象驻留在内存中,则必须以某种方式保持R处于活动状态,这可能与使用多个(不同)脚本文件的这种方法不兼容。使用驻留内存保持某种形式的R的一种方法是提供某种形式的R服务,这种服务可能会有光泽(不太适合此场景),管道工
,或Rserve
。每种方法都有优点和缺点,它们都有缺点(例如,学习曲线、运行过程的开销、配置、身份验证、状态管理等)。改进整个过程的一种方法是:不提供--param1 a1--param2 b1
,而是允许在单个调用中进行多次迭代。例如,您可能支持类似于args的--param1
(当前功能不变),但也可以添加一个选项--params csv somefile.csv
,其中csv文件是一个2列csv,包含1对或多对a1、b1
,每行执行一次。您的脚本需要调整以适应此迭代,但在加载一次后,您可以将大型ish.Rds
保持在常驻状态。