Reputation: 1074
There is plenty of information on how to change the default working directory in R (every time R or RStudio is started, the working directory would change back to default, so one has to run setwd() every time). In RStudio, there is a relevant option in Tools>Global Options>General. The other solutions seem to involve editing the Rprofile.site file. However, all of this requires the user to be capable of finding the Rprofile and editing it, or browsing through the settings, and all the while not messing up.
What I need is a solution for fools students who have no idea how to do this. One might say customizing the environment would be good practise, but this is a very short course, and I'd like it to be as painless as possible to the computer-illiterate souls in the audience.
I have already written a script that downloads all the necessary packages for the course, loads the script in RStudio, downloads and loads a workspace with data and functions. They just have to run it once after installing R+RStudio. For a moment I though this would be a good idea:
cat("setwd(\"the desired working directory\")", file=file.path(Sys.getenv("R_HOME"), "etc", "Rprofile.site"), append=T)
...but this throws Permission Denied, at least under Windows (Program files are protected I guess). The desired solution should be platform independent (most of them have Windows, but some might have Macs or Linux). But most importantly, it should consist of just pasting the script in the console and pressing enter, nothing more complex (hence the fool-proof part of the title).
Upvotes: 6
Views: 4132
Reputation: 18602
What about something like
set_default_wd <- function(wd = getwd()) {
text <- paste0(
'local({ setwd("', wd, '") })')
##
if (Sys.info()["sysname"] == "Windows") {
write(
text,
file = paste0(Sys.getenv("HOME"), "\\.Rprofile"),
append = TRUE)
} else {
write(
text,
file = paste0(Sys.getenv("HOME"), "/.Rprofile"),
append = TRUE)
}
}
##
#R> set_default_wd() #set_default_wd("some/file/path")
This should work on Windows and Unix-like systems, and avoid any permissions issues. Really the only requirement on the user's end is to specify a valid file path, which they should (hopefully) be able to work out.
It may be worthwhile to have the option of overwriting the $HOME/.Rprofile
(instead of forcing lines to be appended) in case a malformed file path is given, etc...
set_default_wd <- function(wd = getwd(), overwrite = FALSE) {
text <- paste0(
'local({ setwd("', wd, '") })')
##
if (Sys.info()["sysname"] == "Windows") {
write(
text,
file = paste0(Sys.getenv("HOME"), "\\.Rprofile"),
append = !overwrite)
} else {
write(
text,
file = paste0(Sys.getenv("HOME"), "/.Rprofile"),
append = !overwrite)
}
}
Upvotes: 5
Reputation: 49640
The most foolproof option may be to install an Rstudio server, configure it with all the packages you want, then give each student an account on the server. That way each student starts with an identical setup and their own directory/folder. Students only need internet access to use it. You could then provide instructions for those students who are adventurous enough to install R on their own computer (and are more likely to be able to follow instructions to set it up properly).
You could also try your cat
option, but put the instructions into .Rprofile in 'HOME' instead of .Rprofile.site in 'R_HOME'.
Or you could put the the code in a .First
function and have them save their workspace in the default location, then when they run R from the default location, the working directory would be changed by .First
.
Or you could just leave them working at the default directory.
Upvotes: 1
Reputation: 31171
You can create a shortcut of RGui.exe
on the toolbar.
Then right-click the Icon, right-click on R, Properties, and in the tab Shortcut, you can set Start in
: the folder you want.
For example C:/Users/myStudentID/Documents/dev
Upvotes: 2