如何在 sweave 文档中使用 if-else 语句

如何在 sweave 文档中使用 if-else 语句

有没有办法在 sweave 文档中使用 if-else 语句,以便仅根据 R 对象的值显示图形。我尝试了不同的方法(下面是其中两种),但没有找到可行的解决方案。

方案一:

R 代码:

x <- seq(0, 10, length.out=11)
y <- seq(0, 10, length.out=11)
show_figure <- sample(c(TRUE, FALSE), 1)

Latex 代码:

...
<<fig = show_figure, echo = FALSE>>=
plot(x,y)
@
...

方案 2:

R 代码:

...
figure <- if(show_figure) {
             "<<fig = TRUE, echo = FALSE>>=
             plot(x,y)
             @"
          } else {}

Latex 代码:

...
\Sexpr{figure}
...

答案1

您不能为此使用 LaTeX 条件。LaTeX 根本不了解 R 代码,只是简单地排版 R 的输出。但您可以使用 R 条件:

\documentclass{article}
\begin{document}
<<echo=F,results='asis'>>=
    x <- seq(0, 10, length.out=11)
    y <- seq(0, 10, length.out=11)
    show <- sample(c(TRUE, FALSE), 1)
    if(show==TRUE){plot(x,y)} else{cat("No plot,sorry")}
@
\end{document}

这会随机生成一个带有散点图的 PDF 或仅生成警告“没有图,抱歉”。

相关内容