这也许有些琐碎,但我不知道该怎么做。 我有一个包含几个R和Bash脚本的makefile,make可以调用这些脚本来执行。我在Makefile中声明了一个变量(project = ABC123),并希望在R&bash脚本中使用它,这样我就不必在每个脚本中都声明该变量。我可以通过导出变量并在bash脚本中调用它来针对Bash脚本执行此操作。但是,我不知道如何在R脚本中调用此变量。
Makefile:
project = ABC123
export project
make bashscript_1
make rscript_1
bashscript_1:
cat $project"_SampleList".csv
rscript_1:
read.csv(file = $project"_SampleList".csv)
Bash脚本按预期工作,但是R脚本无法识别该变量,除非我在此脚本中声明了该变量。有人能帮我吗?感谢您的帮助。
这是我的Makefile和R脚本:
制作文件:
VAR=foo
scripts = /data/resources/scripts/
all:
@Rscript -e 'var<-"${VAR}"' -e "source('foo.R')"
.PHONY: all
foo:
Rscript $(scripts)foo.R
R脚本(foo.R。该脚本保存在路径“ / data / resources / scripts /”中)
print(sprintf("Hello, %s",var))
我正在使用make foo调用R脚本。我没有对您的建议进行任何更改。一旦完成这项工作,我认为可以更轻松地根据自己的需求进行调整。感谢您的帮助。
答案 0 :(得分:0)
Makefile
:
VAR=foo
all:
@Rscript -e 'var<-"${VAR}"' -e "source('foo.r')"
.PHONY: all
Rscript
可以使用-e
运行R脚本。
第一个-e
用于声明var
变量(其值来自Makefile
的{{1}})。下一个VAR
加载主-e
程序(R
)。如果您在foo.r
中使用-e
,则无法使用Rscript
运行R文件,因此需要使用Rscript foo.r
。
-e source(...)
:
foo.r
print(sprintf("Hello, %s",var))
的输出:
make
我希望很清楚:)