我有一个R脚本接受命令行参数,我想将其转换为Rtex或Rnw文件,使用如下命令编写:
knit('myScript.Rtex "-args arg1=a arg2=b"')
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何将我的命令行参数放入myScript.Rtex [用于评估args <- commandArgs()].我试图避免编写可能包含相同信息的临时文件,并由myScript.Rtex读取,因为这似乎不必要的不整洁.有人可以提供建议/解决方案吗?
所以,长话短说,如何最好地将信息放入.Rnw文件中与.R文件中处理命令行参数等效(或至少类似)的块中?
我想在计算中使用它们.例如,我有一个R脚本运行
R CMD BATCH --slave --no-save --no-restore "--args input=blah" myScript.R
Run Code Online (Sandbox Code Playgroud)
现在我想传递相同的参数myScript.Rnw,这是一个版本myScript.R,但散布的LaTeX和R代码块.因此,更广泛的问题只是针对编织器报告处理对我有用,我需要一种方法来更改运行报告的数据.我有一个解决方法 - 但我肯定想知道我是否可以将命令行参数传递给我的.Rnw文件中的一个块.现在我不能这样做.
这是我的解决方法:
#!/bin/bash
if [ $# -ne 2 ];
then ` echo "Usage: $0 refdir cmpdir" exit 1`
fi
export CSPP_VIIRS_EDR_REFERENCE_DIR=$1
export CSPP_VIIRS_EDR_COMPARISON_DIR=$2
script=$(dirname $0)'/viirs_edr_UseR_compare.Rnw'
R --slave --no-save --no-restore -e "require(knitr); knit('$script')" &> viirs_edr_UseR_compare.log
pdflatex viirs_edr_UseR_compare.tex
exit 0
Run Code Online (Sandbox Code Playgroud)
我Sys.getenv()在*viirs_edr_UseR_compare.Rnw*中使用来提取我想要传递的参数,例如CSPP_VIIRS_EDR_REFERENCE_DIR.