使用 for 循环将图像包含在 R sweave 的 R 代码块中

使用 for 循环将图像包含在 R sweave 的 R 代码块中

我是 sweave 和 Latex 的新手。我基本上使用 if-else 循环,如果满足某些条件,该循环应该显示一些特定图像(从笔记本电脑拍摄)。当我在 R 中运行此循环时,控制台中的输出令人满意。当我在 Rnw 文件中使用顶部的“编译 pdf”按钮时,它也很好。

但是,我需要为 csv 的每一行生成不同的报告,因此我使用单独的运行文件,在其中循环 Rnw 遍历 csv 的每一行并生成多个报告(每行一个)。这对于基于文本的输出来说很好。但是,如果我循环遍历它,则不会显示图像。以下是我为此编写的示例:

\begin{figure}
<<echo=FALSE, fig.show='asis', fig=T>>=
library(magick)
image1 <- image_read(path)
image2 <- image_read(path)
x <- 3
if (x >=0 && x <=2){
    #should display image1
}else if (x>=3 && x<=4){
    #should display image2
} 

@
\end {figure}

为了显示图像,我尝试使用 print、paste、knitr::include_graphics,但都不起作用。我不确定这是 latex 问题还是 R 问题,因此无法找到合适的解决方案。任何帮助都将不胜感激。如果您需要我提到的运行文件样本,我很乐意与您分享。谢谢!

答案1

这应该与和knitr一起使用(不适用于 Sweave)。避免使用块选项和环境。我只会使用,因为无法处理 PDF 图像,并且仅用于加载图像是不必要的(此外,我讨厌默认打印必须在动态报告中隐藏的消息的包)。include_graphicsimage_readSweavefigureknitrinclude_graphicsimage_readmagic

\documentclass{article}
\begin{document}
<<loads,echo=F, message=FALSE>>=
library(magick)
A <- "/usr/local/texlive/2019/texmf-dist/tex/latex/mwe/example-image-a.png"
B <- "/usr/local/texlive/2019/texmf-dist/tex/latex/mwe/example-image-b.png"
@

<<test1,echo=F, fig.align="center", fig.cap="My test1",out.width="50%">>=
x <- 3
if (x >=0 && x <=2){image_read(A)} else if (x>=3 && x<=4){image_read(B)}
@

<<test2,echo=F, fig.cap="My test2",fig.align='center',out.width="50%">>=
x <- 2
if (x >=0 && x <=2){include_graphics(A)} else 
if (x>=3 && x<=4){include_graphics(B)}
@

\end{document}

相关内容