我有一个需要按顺序运行的R脚本列表。也就是说,我需要等到第一个完成之后再移动第二个。这是序列:
one.R
two.R
three.R
four.R
我应该写一个简短的bash脚本按顺序调用所有脚本吗?我该怎么写呢?我应该在R脚本的顶部添加什么行?
另外,我的脚本需要与另一个共享R对象。如果我从bash调用脚本,他们仍然会使用一个共同的R工作区吗?
答案 0 :(得分:4)
如果您的脚本需要共享对象,我只需创建一个功能已被切割为功能的脚本。结构可能有点像:
main_script.R
support_functions_A.R
support_functions_B.R
然后在main_script.R
中,您使用source
将功能加载到R会话中,例如source("support_functions_A.R")
。这具有在一个地方具有主要功能的优点,处于更好的抽象级别。如果支持函数的数量增加,您还可以考虑为此创建R包。当您的代码也被其他人使用时,这尤其有用。
使用bash脚本按顺序调用脚本只有在不需要共享相同的R工作区时才能工作。我会避免像这样将R功能链接在一起,并专注于编写函数而不是单独的脚本。
如果您需要在bash中将R脚本作为脚本运行,则可以添加:
#! /usr/bin/env Rscript
位于R脚本的顶部,并使用chmod
使脚本可执行。