在Rmarkdown中的bash中设置环境变量

帕特里克

我想在Rmarkdown bash块中设置一个环境变量,并在以后的R块中访问它。本质上,我想做这个问题的反面,这个问题已经被回答了很多次:RMarkdown从bash块访问参数

我可以使用R将参数传递到bash块中:

Sys.setenv(MY_PARAM = 'param value')

并在bash中访问它:

echo $MY_PARAM

参数值

但是,当我尝试将环境变量存储在bash中时,以后无法在R中访问它:

再次重击:

export MY_PARAM2="param value"
echo $MY_PARAM2

参数值

后来的R块:

Sys.getenv('MY_PARAM2')

[1]“

我将对任何其他有关如何将变量从bash代码块中传递出来以用于以后的块中的想法持开放态度。这是Rmarkdown中复制的全部内容:

```{r}
Sys.setenv(MY_PARAM = 'param value')
```

```{bash}
echo $MY_PARAM
```

```{bash}
export MY_OTHER_PARAM="param value"
echo $MY_OTHER_PARAM
```

```{r}
Sys.getenv('MY_OTHER_PARAM')
```
蓝宝石

bash中的导出值仅在同一会话中可用。因此,如果R是在同一会话中启动的,则R将只能看到该值。如果您的情况如此,那么您的问题已经包含了答案。事实证明这是可行的,请参见此类似问题

但是,如果R进程或其子进程是在其自己的Shell中启动的,则会话变量(例如)MY_OTHER_PARAM对于该R进程可能是未知的。这可能是由rmarkdown / knitr处理外部命令的方式引起的。您可以使用以下代码片段看到此问题:第二个bash会话也不知道导出的变量。其他人也报告了此问题。

```{bash}
export MY_OTHER_PARAM="param value"
echo $MY_OTHER_PARAM
```
```{bash}
echo $MY_OTHER_PARAM
```

因此,最简单的解决方案是将信息存储在特定文件中,并在后续会话中读取它:

```{bash}
echo 'export MY_OTHER_PARAM="param value"' > .rvars
source .rvars
echo $MY_OTHER_PARAM
```
```{bash}
source .rvars
echo $MY_OTHER_PARAM
```

如果我们已经使用过文件,则跳过环境作为返回路径。

```{bash}
echo 'param value' > .myparam
cat .myparam
```
```{bash}
echo $(cat .myparam)
```

```{r}
string <- paste(readLines(".myparam"), collapse=" ")
print(string)
```

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在git bash中设置环境变量

来自分类Dev

在bash(或其他)中设置变量环境变量

来自分类Dev

在python中设置调用bash脚本的环境变量

来自分类Linux

使用Bash在Linux中设置环境变量

来自分类Linux

使用Bash在Linux中设置环境变量

来自分类Dev

在bash中的命令之前设置环境变量

来自分类Dev

如何在git bash中设置环境变量?

来自分类Dev

如何在 bash 中取消设置无效的环境变量?

来自分类Dev

bash在脚本中的命令之前设置环境变量

来自分类Dev

在C中设置DEBUG环境变量

来自分类Dev

无法在jenkinsfile中设置环境变量

来自分类Dev

在Gatsby中设置环境变量

来自分类Linux

在AWS实例中设置环境变量

来自分类Dev

在 Javascript 中设置环境变量

来自分类Dev

在 Symfony 中设置默认环境变量

来自分类Dev

从库C ++中设置环境变量

来自分类Dev

在Python中设置环境变量

来自分类Dev

在makefile中设置环境变量

来自分类Dev

SETX从文件中设置环境变量

来自分类Dev

在环境变量中设置额外的主机

来自分类Dev

在Docker中设置环境变量

来自分类Java

在ant脚本中设置环境变量

来自分类Python

在virtualenv中设置环境变量

来自分类Python

在virtualenv中设置环境变量

来自分类Linux

在C中设置环境变量

来自分类Dev

无法在〜/ .profile中设置环境变量

来自分类Python

在python脚本中设置环境变量

来自分类Dev

无法在 Apache 中设置环境变量

来自分类Dev

在shell别名中设置环境变量