r-如何定义和调用Makefile中定义的变量



这可能是一些琐碎的事情,但我不知道如何做到。我有一个makefile,其中包括几个R和Bash脚本,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

rsccript_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脚本。我对你的建议没有任何改变。一旦我完成了这项工作,我想根据我的需求定制它会更容易。谢谢你的帮助。

Makefile:

VAR=foo
all:
@Rscript -e 'var<-"${VAR}"' -e "source('foo.r')"
.PHONY: all

Rscript可以使用-e运行R-脚本。

第一个-e用于声明var变量(其值来自MakefileVAR(。下一个-e加载主R程序(foo.r(。如果在Rscript中使用-e,则无法使用Rscript foo.r运行R文件,因此需要使用-e source(...)

foo.r:

print(sprintf("Hello, %s",var))

make:的输出

$ make
[1] "Hello, foo"

我希望它是明确的:(

最新更新