Paths in knitr
On 08/06/2017 7:15 AM, G.Maubach at weinwolf.de wrote:
Hi All,
I have to compile a report for the management and decided to use RMarkdown
and knitr. I compiled all needed plots (using separate R scripts) before
compiling the report, thus all plots reside in my graphics directory. The
RMarkdown report needs to access these files. I have defined
```{r setup, include = FALSE}
knitr::opts_knit$set(
echo = FALSE,
xtable.type = "html",
base.dir = "H:/2017/Analysen/Kundenzufriedenheit/Auswertung",
root_dir = "H:/2017/Analysen/Kundenzufriedenheit/Auswertung",
fig.path = "results/graphics") # relative path required, see
http://yihui.name/knitr/options
```
and then referenced my plot using
<img src = "email_distribution_pie.png"></img>
because I want to be able to customize the plotting attributes.
But that fails with the message "pandoc.exe: Could not fetch
email_distribution_pie.png".
If I give it the absolute path
"H:/2017/Analysen/Kundenzufriedenheit/Auswertung/results/graphics/email_distribution_pie.png"
it works fine as well if I copy the plot into the directory where the
report.RMD file resides.
How can I tell knitr to fetch the ready-made plots from the graphics
directory?
Put the path in a variable, and use that in the img tag, e.g.
```{r}
gdir <- file.path(knitr::opts_knit$get("base.dir"), "graphics")
```
<img src = `r file.path(gdir, "email_distribution_pie.png")`></img>
If you think that is still too much typing, you could make a little
function to turn a string like "email_distribution_pie" into the fully
specified path.
HOWEVER: Your workflow may not be ideal. It is almost always better to
produce the graphs in code that's in the document, rather than in
separate R scripts. This makes it *much* easier to modify the plots
and be sure that the latest version makes it into the report.
If the plots require lots of code and you think it would be distracting
in the source of your document, then it's time to make a private
package, and put the code in there. In the document, just include calls
to functions from that package.
Duncan Murdoch