在bash和R之间共享配置变量

问题描述 投票:-1回答:1

我需要在各种R和bash程序之间共享配置变量。它们共享各种资源,尤其是GRASS数据库。

我首先创建了一个bash脚本来设置shell变量,然后运行R程序。这样R对shell变量是盲目的:

$ cat testVars.R
Sys.getenv(c("WDIR","GDIR"))
$ cat testVars.sh
#!/bin/sh
WDIR="/Work/Project/"
GDIR=$WDIR"GRASSDATA" 
Rscript testVars.R
$ ./testVars.sh
WDIR GDIR 
  ""   "" 

然后我尝试在R中使用readRenviron函数,认为它可以用于获取设置变量的bash文件。但是,这导致了一个不同的问题,R无法替换和连接像bash这样的变量:

$ cat testVars.R
readRenviron("./testVars.sh")
Sys.getenv(c("WDIR","GDIR"))
$ cat testVars.sh
#!/bin/sh
WDIR="/Work/Project/"
GDIR=$WDIR"GRASSDATA" 
$ Rscript testVars.R
            WDIR             GDIR 
"/Work/Project/" "$WDIRGRASSDATA"  

YAML在某种程度上受到两种语言的支持,但它受到same lack of replacement and concatenation facilities的影响。例如,对于YAML,我需要在配置文件中无数次重复工作目录。

所以这就是我要找的东西:R和bash都可以使用的配置格式,也允许变量连接。

r bash configuration yaml config
1个回答
2
投票

我认为你所需要的只是在bash中使用export变量来使它们可以被R访问。

$ export TEST_VAR=42
$ Rscript -e "Sys.getenv('TEST_VAR')"
[1] "42"

然后可以用paste()paste0()处理连接。

© www.soinside.com 2019 - 2024. All rights reserved.