R Markdown : Can't access Bash command installed through Conda/Anaconda

标签 r bash r-markdown conda environment

我正在探索一些生物信息学数据,并且我喜欢尽可能使用 R 笔记本(即 Rmarkdown)。现在,我需要使用命令行工具来分析 VCF 文件,我想通过 Rmarkdown 笔记本中的 Bash 代码块来分析。

问题是我要使用的命令是用 conda 安装的。进入我的 conda 环境。该工具是bcftools .当我尝试访问此命令时,我收到此错误(代码块已注释掉以显示 rmarkdown 代码块格式):

#```{bash}
bcftools view -H test.vcf.gz
#```
/var/folders/9l/phf62p1s0cxgnzp4hgl7hy8h0000gn/T/RtmplzEvEh/chunk-code-6869322acde0.txt: line 3: bcftools: command not found

而如果我从终端运行,我会得到输出(使用名为“binfo”的 conda 环境):
> bcftools view -H test.vcf.gz | head -n 3
chr10   78484538    .   A   C   .   PASS    DP=57;SOMATIC;SS=2;SSC=16;GPV=1;SPV=0.024109    GT:GQ:DP:RD:AD:FREQ:DP4 0/0:.:34:33:0:0%:0,33,0,0   0/1:.:23:19:4:17.39%:1,18,0,4
chr12   4333138 .   G   T   .   PASS    DP=119;SOMATIC;SS=2;SSC=14;GPV=1;SPV=0.034921   GT:GQ:DP:RD:AD:FREQ:DP4 0/0:.:72:71:1:1.39%:71,0,1,0    0/1:.:47:42:5:10.64%:42,0,5,0
chr15   75086860    .   C   T   .   PASS    DP=28;SOMATIC;SS=2;SSC=18;GPV=1;SPV=0.013095    GT:GQ:DP:RD:AD:FREQ:DP4 0/0:.:15:15:0:0%:4,11,0,0   0/1:.:13:8:5:38.46%:5,3,1,4
(binfo)

那么,如何从 R 笔记本/Rmarkdown bash 代码块访问使用 conda/在我的 conda env 中安装的工具?找了半天也没找到人说跑conda Rmarkdown 中 shell block 中的命令。任何帮助将不胜感激,因为我喜欢用于探索性分析的 R 笔记本格式。

最佳答案

将参数传递给引擎

如果您的 Conda 是 properly configured to work in bash , 那么你可以使用 engine.opts告诉 bash 以登录模式启动(即,获取您的 .bash_profile (Mac) 或 .bashrc (Linux)):

bash

```{bash engine.opts='-l'}
bcftools view -H test.vcf.gz
```

zsh

如果使用 zsh (例如,Mac OS 10.15 Catalina 用户),然后是交互式标志,--interactive|-i就是你想要的(图片来源: @Leo )。
```{zsh engine.opts='-i'}
bcftools view -H test.vcf.gz
```

同样,这假定您之前运行过 conda init zsh设置 Conda 以使用 shell。

关于再现性的说明

由于可重复性通常是科学工作中的一个问题,我要补充一点,您可能想要做一些事情来捕获您的 Conda 环境的状态。例如,如果您在版本控制中工作,则提交 conda env export > environment.yaml .另一种选择是直接在 Rmd 的末尾输出该信息,就像通常使用 sessionInfo() 所做的一样。 .那是,

```{bash engine.opts='-l', comment=NA}
conda env export
```
comment=NA以便可以从渲染版本中干净地复制输出。

关于R Markdown : Can't access Bash command installed through Conda/Anaconda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58125986/

相关文章:

r - 按因子列估算 data.frame 组中的变量

linux - Bash 命令在交互式 shell 中有效,但在脚本中无效

linux - 在 Linux 中的单个列上进行 Grep

r - 绘图编织错误: "unable to start png() device"

r - 通过引用处理具有 := (data. 表分配的复杂公式)

r - 两个列表的元素乘法

r - 是否有 R 函数用于查找向量中元素的索引?

linux - 从特定字段的 csv 中删除行,如果它包含以下 x 个字符串/单词

r - pkgdown::build_site() 未在 HTML 渲染中捕获 R 包 Logo

css - 如何在 .Rmd html 输出中跨平台强制使用相同的代码块字体?