这可能是一些琐碎的事情,但我不知道如何做到。我有一个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
变量(其值来自Makefile
的VAR
(。下一个-e
加载主R
程序(foo.r
(。如果在Rscript
中使用-e
,则无法使用Rscript foo.r
运行R文件,因此需要使用-e source(...)
。
foo.r
:
print(sprintf("Hello, %s",var))
make
:的输出
$ make
[1] "Hello, foo"
我希望它是明确的:(