Rstudio save Rmd file failed - r

While I editing Rmd file using RStudio, "Ctrl+S" not work anymore for the current edited file. The unsaved file status is illustrated as fig 1. But both the "Ctrl+S" and "Clicking the save icon" not work. This occurred several hours after the RStudio started. I can't catch exactly when this is happened. To solve this problem, using "Ctrl +A" and copy all the content to another file. And then close the problem Rmd file without saving.
It is ok to open another new Rmd file and both "Ctrl+S" and "Clicking the save icon" worked normally for the new Rmd file.
fig.1 there is a "*" after the file name, indicating the file has been changed and not saved.
My OS is: Windows 10 home version

Related

How can you set the working directory quickly to a file's location in RStudio?

The old method is the following :
There's a new feature on RStudio.
Just right-click on the a script's tab and choose "Set Working Directory"
The script has to be saved first as an R file for this to work (see this comment)

Rstudio freezes at the start because it can't load a notebook

I didn't save the notebook but as in rstudio these files are still there with names like Untitled.Rmd and Untitled.nb.html. I understand the problem is that the file has a lot in it (tons of intermediate values in parameter optimization) and I noticed before the studio has problem loading when there is a lot of stuff in notebook. When I had this problem with saved notebook, I simply deleted them and the problem was solved. Now the problem is I don't know where the Untitled.Rmd and Untitled.nb.html are saved.
I found the location where these files are saved. It's in the following folder:
~/.local/share/rstudio/sources
There is bunch of folders starting with s- . The unsaved .Rmd file which was giving me problem was saved in folder named s-6ABEC66A.

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"

How to specify where cronR saves output file

I have successfully run a simple cronR tutorial using the cronR add in within R Studio. Here is the following code that I have saved in a R script file:
library(glue)
current_time <- Sys.time()
print(current_time)
msg <- glue::glue("This is a test I am running at {current_time}.")
cat(msg, file = "test.txt")
The R script file is saved within a specific project directory. The log file when the job runs is also saved there. However, the output of the script file, test.txt, is saved in my home directory. I am on a Mac. In the tutorial, it was stated that this would happen, that cron would save any output in the home directory and that if I want to change the location that I have to "specify otherwise". However, the tutorial gives no instructions for how to do this and I am not sure if I am supposed to do this through the terminal in mac and if so how? Changing the file path in the script file (e.g. Documents/test.txt) changes nothing, as the test.txt file is still saved in the home drive. I suspect I have to make this change somewhere else but I am not sure where. Any help would be appreciated.
For anyone who runs into the same issue, I was able to solve my problem by using launchD. I followed this tutorial https://babichmorrowc.github.io/post/launchd-jobs/. It worked as anticipated and now my .txt file is saved to the correct place. There is also a tutorial there for cron jobs, though if you are on a mac, launchD is apparently the preferred method.

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.

Resources