From murdoch@dunc@n @ending from gm@il@com  Tue Jul 10 19:52:38 2018
From: murdoch@dunc@n @ending from gm@il@com (Duncan Murdoch)
Date: Tue, 10 Jul 2018 13:52:38 -0400
Subject: [Rd] 
 RMarkdown Vignettest in R packages with child is failing in
 package build
In-Reply-To: <CAAjnpdj7FFxJhj0b=AbX6dvXY5ErqDrEtpRfvohPFF40ra0c_Q@mail.gmail.com>
References: <CAAjnpdj7FFxJhj0b=AbX6dvXY5ErqDrEtpRfvohPFF40ra0c_Q@mail.gmail.com>
Message-ID: <b3c7e9b2-f9a6-855c-9029-e6af1dc0ca60@gmail.com>

On 10/07/2018 11:44 AM, Witold E Wolski wrote:
> Dear List,
> 
> I am working on moving some Rmarkdown reports into the vignettes
> folder of a package. While I was able to solve to problem of
> parametrized reports in vignettes folder thanks to your invaluable
> help (Thank you), I am now struggling with the following problem.
> 
> 
> One of the reports which I am moving to vignettes includes the following code :
> 
> 
> ```{r}
> child_docs <- "Grp2Analysis_MissingInOneCondtion.Rmd_t"
> if(TRUE){
>    child_docs <- "Grp2Analysis_Empty.Rmd_t"
> }
> 
> ```
> 
> ```{r includeMissingInOne, child = child_docs}
> ```
>     # this is line 351 from the error message
> 
> which depending on a test outcome includes one or the other Rmarkdown
> document into the main document.
> 
> 
> While this report renders executing rmarkdown::render or
> devtools::build_vignettes, it fails when building the package with
> devtools::build or R CMD build
> given the following error:
> 
> 
> Error in eval(x, envir = envir) : object 'child_docs' not found
> Warning in readLines(if (is.character(input2)) { :
>    cannot open file './child_docs': No such file or directory
> Quitting from lines 351-351 (./child_docs)
> Error in readLines(if (is.character(input2)) { :
>    cannot open the connection
> ERROR: installing vignettes failed
> * removing 'C:/Users/wolski/AppData/Local/Temp/RtmpIti891/Rinst2cec49ca2170/SRMService'
> In R CMD INSTALL
> 


Since you didn't give a path to that file, it will use the current 
working directory, which might be a temporary directory used during the 
package installation.  Since you want this to work as a vignette, you 
need to include the child docs in your package.  One way to do that is 
to put them in a new directory called "inst/children", which will be 
installed to "children" when your package is installed.  Then the 
vignette can find the file as

     system.file(file.path("children", child_docs), package = "yourpackage")

You could also put them in the "vignettes" directory, but there are 
special rules for how files there are installed or not, so I'd recommend 
against it.

Duncan Murdoch



[Rd] RMarkdown Vignettest in R packages with child is failing in package build
Duncan Murdoch