Я пять изображений хранятся следующим образом (где «CurrentDirectory» результат я получаю от команды getwd()):Вставьте несколько изображений в для цикла в Sweave Документ
currentDirectory/results/thePlot_1.jpg
currentDirectory/results/thePlot_2.jpg
currentDirectory/results/thePlot_3.jpg
currentDirectory/results/thePlot_4.jpg
currentDirectory/results/thePlot_5.jpg
Я пытаюсь написать сценарий .Rnw в Rstudio, который создаст файл .tex, который затем я могу запустить pdflatex, чтобы иметь .pdf-файл, содержащий эти пять изображений. Ниже то, что я пробовал:
\documentclass{article}
\usepackage{float, hyperref}
\usepackage[margin=1in]{geometry}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{caption}
\usepackage{algorithm}
\usepackage{algorithmic}
\begin{document}
\SweaveOpts{concordance=TRUE}
\author{myName}
\title{myTitle}
\maketitle
<<options, echo=FALSE>>=
library(knitr)
opts_chunk$set(cache=TRUE)
@
\section*{mySection}
\FOR{i in 1:5}
nPlots=i
plotName = "thePlot"
outDir = "results"
\includegraphics{paste(getwd(), "/", outDir , "/", plotName, "_", i, sep="")}
\ENDFOR
\end{document}
За что я получаю несколько ошибок:
Line 25: Undefined последовательности управления. Строка 29: Отсутствует значение $. Строка 29: Ошибка LaTeX: файл `paste (getwd(),"/", outDir,"/", plotName," _ ", i, sep =" ") 'не найден. Строка 29: Отсутствует значение $. Строка 30: Неопределенная последовательность управления.
Любая помощь очень ценится!
EDIT 1: Я принял во внимание рекомендации Alex A., и изменил раздел, чтобы включить \ Sexpr {} выражения следующим образом:
\FOR{i in 1:5}
\Sexpr{nPlots=i}
\Sexpr{plotName = "thePlot"}
\Sexpr{outDir = "results"}
\includegraphics{\Sexpr{paste(getwd(), "/", outDir , "/", plotName, "_", i, sep="")}}
\ENDFOR
\end{document}
Однако, теперь я получаю сообщение об ошибке:
object 'i' not found
Я попытался изменить состояние в течение цикла также включать \ Sexpr {}, как в:
\FOR{\Sexpr{i in 1:5}}
Но Тхи s получает мне ошибку:
Unexpected 'in'
Любая помощь приветствуется!
EDIT 2:
Я попытался принимая во внимание рекомендации, чтобы просто поставить на петлю и имиджевую вставки в RCODE. Таким образом, я пытался использовать Jpeg библиотеку и его метод readJPEG, как показано ниже:
<<echo=FALSE>>==
library(jpeg)
@
<<plots, echo = FALSE, fig = TRUE, figs.only = TRUE, results = hide>>=
for (i in 1:5){
nPlots=i
plotName = "thePlot"
outDir = "results"
img <- readJPEG(paste(getwd(), "/", outDir , "/", plotName, "_", i, ".jpg", sep=""))
plot(img)
}
@
\end{document}
К сожалению, это по-прежнему приводит к ошибке:
unexpected 'in'
Кроме того, когда я запускаю код ниже в одиночку (не в наличии для цикла или .Rnw файла):
nPlots=1
plotName = "thePlot"
outDir = "results"
img <- readJPEG(paste(getwd(), "/", outDir , "/", plotName, "_", i, ".jpg", sep=""))
plot(img)
изображение, которое генерирует выглядит иначе, чем .jpeg изображение, которое я (расположенного в CurrentDirectory/результаты/thePlot_1.jpg)
Попробуйте обернуть 'paste (...)' in '\ Sexpr {}'. –
@AlexA .: Спасибо за помощь. Казалось, что он решил проблему, хотя кажется, что для цикла все еще не работает, как я надеюсь. У вас есть предложения по поводу этой новой ошибки? – LanneR
Я не думаю, что использование '\ For' и' \ EndFor' для включения нескольких графиков - лучший способ сделать это. (На самом деле я не думаю, что вы это сделаете так). Я бы, вероятно, сделал фрагмент R, например '<< сюжеты, echo = FALSE, fig = TRUE, figs.only = TRUE, results = hide >>' (R для отображения графиков) '@'. Это автоматически будет внедрять их. –