有没有办法在 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 或仅生成警告“没有图,抱歉”。