如何在Rscript的renv::run()中使用路径变量
解决Bash变量在Rscript -e命令中无法解析的问题
针对你遇到的Bash变量无法在Rscript单引号代码块中生效的问题,下面提供几种可行的解决方法:
方法1:外层用双引号包裹R代码,内层用单引号定义路径字符串
Bash会解析双引号内的变量,同时R可以正常识别单引号包裹的字符串,写法如下:
Rscript -e "renv::run('$SRC_DIR/to/myscript.R')"
方法2:提前拼接完整路径变量
先在Bash中把完整路径拼接好,再传入R命令,逻辑更清晰:
FULL_PATH="${SRC_DIR}/to/myscript.R" Rscript -e "renv::run('$FULL_PATH')"
方法3:单引号拼接变量(适合坚持用单引号包裹R代码的场景)
通过拆分单引号代码块,将变量部分放在单引号外让Bash解析,再拼接回去:
Rscript -e 'renv::run("'"$SRC_DIR"'/to/myscript.R")'
你之前写法失效的原因
- Bash单引号内的变量不会被解析,
$SRC_DIR会被直接当成字符串传给R,导致R无法识别这个语法。 - 连续的双引号(
"$SRC_DIR""/to/myscript.R")会让R认为是未闭合的字符串常量,触发语法错误。
内容的提问来源于stack exchange,提问作者jerry
相关产品推荐
相关产品推荐

