![使用 for 循环将图像包含在 R sweave 的 R 代码块中](https://linux22.com/image/426507/%E4%BD%BF%E7%94%A8%20for%20%E5%BE%AA%E7%8E%AF%E5%B0%86%E5%9B%BE%E5%83%8F%E5%8C%85%E5%90%AB%E5%9C%A8%20R%20sweave%20%E7%9A%84%20R%20%E4%BB%A3%E7%A0%81%E5%9D%97%E4%B8%AD.png)
我是 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_graphics
image_read
Sweave
figure
knitr
include_graphics
image_read
magic
\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}