Is there a "bitbucket_document" output setting for Rmarkdown? - r

I built an internal R package that I host on the company's bitbuckets. My Rmarkdown knits to
"github_document".
The image links are broken when I view the Readme on bitbucket.
When I visit the package's page, it tries to link to this file, and fails:
https://mybicketbucket.ca/users/myusername/repos/mypackage/man/figures/README-unnamed-chunk-7-1.png
left-clicking on readme.md, it links to this file and successfully displays the image:
https://mybicketbucket.ca/users/myusername/repos/mypackage/browse/man/figures/README-unnamed-chunk-7-1.png?raw=
any idea?

Just add in your first chunk.
knitr::opts_knit$set(base.url = "raw/")
The md file will not be pretty on your package repo but it will print the figure on bitbucket.

Related

How to render a "github_document" Rmd without generating the HTML preview?

I'm maintaining a package and have to rebuild the README.Rmd file every once in a while.
Using the "knit" button in RStudio, the effect is correct: the file README.md is generated at the root of the package, and a README.html preview is created in a temporary file and opened.
However, if I use the following command, the HTML preview is created at the root of the package, which is unnecessary.
rmarkdown::render(input="README.Rmd")
How to tell this preview file to be temporary, or even to not bother to exist at all?
I tried to set intermediates_dir=tempfile() with no effect, and I couldn't find what command RStudio is running on "knit" push. Moreover, it seems that this simple command does not have this side effect when run through Github Actions (link).
PS: Here is a minimal example of my Rmarkdown file (whole file here):
---
output: github_document
---
Hello Word
Set the html_preview option to false, like so:
---
output:
github_document:
html_preview: false
---
Hello World
This option is documented here. BTW, I suspect that a .html file is generated on the server where the render-rmarkdown action is performed; you don't see it locally because the action only commits changes to .md files:
$ git commit ${RMD_PATH[*]/.Rmd/.md} -m 'Re-build Rmarkdown files' || echo "No changes to commit"

R issue when moving an rmd file from one project to another (working directory issue)

I have two projects in R. I've moved an .Rmd document from project 1 to project 2.
When I used the .Rmd file which I had moved to project 2 to try and read in some data I get the following error message:
cannot open file '"mydata.csv"': No such file or directoryError in file(file, "rt") : cannot open the connection.
This kind of error usually suggests to me it's a working directory issue, however when I run getwd() in the command line it's the correct working directory that is listed and points to where the csv is stored. I've also run getwd() within the rmd doc and again the wd is correct.
Does anyone else have this experience of moving one .Rmd file to another project and then it not working in the new project?
The code in the .Rmd file that I am trying to run is:
Data <- read.csv("mydata.csv", stringsAsFactors = T) and the data is definitely within the project and has the correct title, is a csv etc.
Has anyone else seen this issue when moving an RMarkdown document into another project before?
Thanks
This may not be the answer, but rmarkdown and knitr intentionally don't respect setwd(): the code in each block is run from the directory holding the .rmd file. So, if you've moved your .rmd file but are then using setwd() to change to the directory holding the data, that does not persist across code chunks.
If this is the issue, then one solution is to use the knitr options to set the root.dir to the data location:
opts_knit$set(root.dir = '/path/to/the/data')
See here.
Maybe not relevant but it seems to be the most likely explanation for what's happening here:
The project shouldn't really interfere with your code here. When opening the project it will set your working directory to the root location of the project. However, this shouldn't matter in this case since RMarkdown files automatically set the working directory to the location where the RMarkdown file is saved. You can see this when running getwd() once in the Console and once from the RMarkdown file via run current chunk.
The behavior is the same when the file is knitted. So except in the case when "mydata.csv" is in the same directory as the RMarkdown file, the code above won't work.
There are two workarounds: you can use relative or absolute paths to navigate to your data file. In a project I prefer relative paths. Let's say the rmd file is in a folder called "scripts" and your data file is in a folder called "data" and both are in the same project folder. Then this should work:
Data <- read.csv("../data/mydata.csv", stringsAsFactors = TRUE)
The other option, which I do not recommend, is to set the working diretory in the rmd file via:
opts_knit$set(root.dir = '../data/')
The reason why I wouldn't do that is because the working direcotry is only changed when knitting the document but using the rmd file interactivly, you have a different working directory (the location of the rmd file)
This is a great application of the here package for dealing with these types of issues.
here https://github.com/jennybc/here_here looks around the Rmd file (and all R files) for the .Rproj file and then uses that as an "anchor" to search for other files using relative references. If for instance you had the following project structure:
-data
|--mydata.csv
-src
|-00-import.R
|-01-make-graphs.R
|-02-do-analysis.R
-report
|--report.Rmd
-yourproject.Rproj
And you wanted to use mydata.csv in your report.Rmd you could do the following:
library(here)
dat <- read.csv(here("data", "mydata.csv"))
here will then convert this path to "~/Users/../data/mydata.csv" for you. Note that you have to be in the Rproject for this use case.
Here is such a great package and solves a lot of issues.

Developing R package jpeg/png files under inst/doc are not appearing

I am currently updating a package and am hitting a wall on this issue.
I haven't been able to find any documentation explaining why the png files under inst\doc are not appearing in the library folder when I run the following:
install(package_path)
using the devtools package where package_path is the path to the source folder for the package.
I do not have an .Rinstignore file and just in case I have made sure that my .Rbuildignore does not have any patterns matching png files.
Any help or direction towards documentation over this matter would be appreciated.
To help clarify:
Below (on the left) you can see the package within the library directory containing just the html files. This is the result of running the install() command on the library I am maintaining, "". On the right is the source directory containing the png files as well. These png files are not being transferred over.
There is no additional code involved on my part.
[![![enter image description here][1]][1]
Now what is strange is that if I move the image files out of the inst directory, (So for example putting them in the root directory of the package), they do get copied over to the library.
This is extremely old now, but I came across this thread because I had the same issue.
It seems to me that it is something to do with the name of the sub-directory in inst. I had the same problem with .png files in inst/doc/img which would not copy over on package build. But changing the file name to inst/markdown/img and everything copies fine.

GitLab rendering the wrong README in Project & Public views

I'm using R markdown (README.Rmd) to knit/render to README.md at the top level of a project directory. GitLab (both in Project and Public views) chooses the .Rmd file to render vs the .md file and produces a visual mess instead of a nicely-formatted project description.
Is there any way to tell GitLab to ignore .Rmd files when picking the "right" one to use for the project/public view or am I left with a workflow that will mean keeping the README.Rmd in a separate directory then having the R project build process render and copy a knitted README.md to the top-level project directory?
This is a fresh install (this week) of a self-hosted instance of GitLab, but you can see it rendering the wrong README here.
I've reproduced this issue. I'll look into this tomorrow and make a PR for fixing this.

R Sweave output error

I'm using RStudio v0.96.331 with pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian).
I have a R project in the '/home/operacao/Myprojs/projName', which is my working directory.
Now, if i create a folder called 'reports' in '/home/operacao/Myprojs/projName/reports', and inside the sweave file (which is in the reports folder) use the code
setwd('/home/operacao/Myprojs/projName')
After loading some packages, i receive the error
Error in driver$finish(drobj) :
the output file 'my_report.tex' has disappeared
Calls: <Anonymous> -> <Anonymous>
Execution halted
But the file is in the folder, and the plots i made appear in the .pdf. The text output
does not appear.
Anyone knows why that happens? If i save the Sweave files in my directly in my working directory, everything works fine.
Thanks!
Probably RStudio requires you to set the working directory to the location which contains the Sweave file. Why do you need to set your working directory to another directory? You could use source to load any R code files which are in projName.

Resources