【发布时间】:2020-06-19 12:05:22
【问题描述】:
我想在 Rmarkdown bash 块中设置一个环境变量,并在以后的 R 块中访问它。本质上,我想做这个问题的反面,这个问题已经回答了很多次了:RMarkdown accessing parameter from bash chunk
我可以使用 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')
```
【问题讨论】:
-
您可以尝试用自定义系统调用替换
Sys.getenv(...),例如:system(command = 'echo %MY_PARAM2%', intern = TRUE)。 -
好主意,但没有这样的运气。运行
system(command = 'echo MY_OTHER_PARAM: $MY_OTHER_PARAM')产生输出MY_OTHER_PARAM: -
我不太明白 RMarkdown bash 代码块中的环境是什么,或者为什么它看起来与整体环境不同。或许@yihui-xie 可以澄清一下?
-
如果您在控制台中运行系统调用(例如,对于其他环境变量,如“PATH”),它是否工作?你在哪个操作系统上?
标签: r bash r-markdown