If statement 使用Conda在Snakemake中使用R标记(TinyTeX)创建PDF报告

If statement 使用Conda在Snakemake中使用R标记(TinyTeX)创建PDF报告,if-statement,r-markdown,conda,snakemake,tinytex,If Statement,R Markdown,Conda,Snakemake,Tinytex,我目前在Snakemake的conda环境中使用TinyTeX时遇到问题。在运行管道之前,我必须使用命令TinyTeX::install\u TinyTeX()安装TinyTeX安装文件。这将在创建的环境之外安装TinyTeX(这不是什么大问题……但也不是首选)。主要的问题是,每次我执行Snakemake管道时,它都会尝试重新安装我不想要的安装。谁能告诉我最简单的方法是什么来检查它是否已经安装?我是否应该在if语句中使用命令Rscript-e\“tinytex:::is\u tinytex()\

我目前在Snakemake的conda环境中使用TinyTeX时遇到问题。在运行管道之前,我必须使用命令
TinyTeX::install\u TinyTeX()
安装TinyTeX安装文件。这将在创建的环境之外安装TinyTeX(这不是什么大问题……但也不是首选)。主要的问题是,每次我执行Snakemake管道时,它都会尝试重新安装我不想要的安装。谁能告诉我最简单的方法是什么来检查它是否已经安装?我是否应该在if语句中使用命令
Rscript-e\“tinytex:::is\u tinytex()\”
?在Snakemake中调用
Rscript-e
,编写if语句的最佳方法是什么?或者我应该在第一次运行时编写一个布尔文本文件,指定TinyTeX之前是否已安装

TinyTeX conda依赖项在没有额外安装的情况下无法独立工作,这有点糟糕

蛇行规则(忽略输入/输出):

康达·亚马尔:

name: r-rmarkdown
channels:
  - conda-forge
  - bioconda
dependencies:
  - r-base=4.0.3
  - r-rmarkdown=2.5
  - r-tinytex=0.27

提前谢谢。

我想我已经解决了这个问题。我没有调用
Rscript-e
,而是将下面的if语句放在R Markdown中的setup块中(如果我正确,它会在运行任何其他代码之前运行)。然后我继续卸载TinyTeX,看看它是否只会安装一次

knitr::opts_chunk$set(echo = TRUE)
library(knitr)
if (!tinytex:::is_tinytex()){
   tinytex::install_tinytex()
}

如果您知道一个文件安装了
tinytex::install\u tinytex()
程序,那么可以在调用Rscript之前测试它的存在性。如果这就是你所说的“使用命令
Rscript-e\”tinytex:::is\u tinytex()\“
和If语句”的意思,我认为这确实是最简单的事情。不相关的。。。您不需要在shell指令中转义双引号,因为您将它包装为三重引号。也就是说,你可以用
“tinytex foo bar”
代替
“tinytex foo bar”
啊,当然,我错了。将更改thnx;)
knitr::opts_chunk$set(echo = TRUE)
library(knitr)
if (!tinytex:::is_tinytex()){
   tinytex::install_tinytex()
}