i've been getting up to speed using R of late, and am wondering what the most efficient way is to clone an RStudio environment, especially the package installations, from one machine to another. i'd like to be able to switch from my desktop machine to my laptop, but i am adding packages very frequently to the desktop as i work and would like a simple way to make sure the same packages get installed on the laptop.
any help much appreciated
ps. not everything i'm installing is from CRAN...some are packages taken from github
If you have more than a couple of machine to maintain with the same R configuration, I think you should consider setting up your own local R repository.
And I will just redirect you to another SO question here:
Creating a local R package repository
You can also find the most useful information in the R manual.
Once this is done, you just have to update the local R repository and the packages will be updated on all machines, Windows or Unix
You can just copy and paste the folders in the R libraries between machines. As long as it is the same operating system on both machines there should not be any problem. If you want it to be automatically synchronised then place the R libraries into something like dropbox so that adding or updating a package will automatically appear on either machine with the next sync.
Related
I was developing a shiny-app on a Windows machine in Rstudio. Now I need to develop it on a Linux machine and later on will need to deploy it on a server. Because of the need to run the app across platforms, I was looking into some environment control application so that I don't have to tune and reinstall the needed packages manually.
I tried to use Packrat for this purpose. I made a snapshot on my Windows machine, copied and pasted the project to my Ubuntu, reopened the project on RStudio, installed Packrat and the restore of the packages ran automatically. Then I ran into an issue that some of the packages that requires system dependencies were not installed automatically, e.g. rgdal and jqr. Therefore, I had to manually install those system dependencies manually in a terminal (it took me a while because there were about 10 of them that requires extra system dependencies).
I am wondering if there is an easier way to just automatically handle this. Later on, I will need to work with a system administer to deploy the app to the server. I am wondering if Packrat has the capability of automatically installing system dependencies on Linux machine/server. If anyone has encounter this issue before, or have other better options, please let me know!
Thank you!
Hello and welcome to StackOverflow.
You are facing a question that is actually much harder to tackle than you may think at first---deployment of complex R package dependencies across different operating systems is a truly hard and, truth be told, unsolved problem!
You can of course use packrat and renv for R package dependencies and snapshots of particular versions. But this does not do anything for system-level dependencies which are simply taken as "given". So no to just transfering to another box and saying "abracadabra". Sorry!
The closest we all may have gotten to fixing this may be Docker where you can create a portable unit of execution that can be deployed whereever Docker run: Windows, macOS, different Linux flavours, ... as it encodes everything.
Here is a example situation: I wish to test if a new user of my R package will be able to install. If it will demand any additional configuration that I have in my developer environment and the user do not have.
I would like to see possibilities. I have already tried Docker and Virtual Machines. But I guess that exists easier ways to accomplish this!
Edit:
What I want is possible to do in Virtual Machines/Docker!
I made a brand-new system to check what errors can I get when installing the package in this new environment.
What I really want here is to know how to do a new configuration of a new environment in my own PC, and not in a virtual machine like system.
if(!require(somepackage)){
install.packages("somepackage")
library(somepackage)
}
Maybe this is some of your solution in the packages question
Link of the info:
Elegant way to check for missing packages and install them?
Due to recent experience with several bugs created by updating packages, I wonder what the best approach is for the following problem:
I currently provide a stand alone version so to say of my shiny App (just the script files to run it locally) and run a long list of require() functions to load / install the needed packages. However, in the end I would like to use fixed package versions to avoid bugs created by changes in packages.
Is there a way to ensure that the user, who may have older or newer versions of packages on their computer, is using the right version of all the packages my app needs?
You can consider using packrat: https://rstudio.github.io/packrat/.
Unfortunately, private libraries don’t travel well; like all R
libraries, their contents are compiled for your specific machine
architecture, operating system, and R version. Packrat lets you
snapshot the state of your private library, which saves to your
project directory whatever information packrat needs to be able to
recreate that same private library on another machine.
Short tutorial:
RStudio - File - New Project - New Directory - New Project - "Do: use Path" - Create Project
Enter in the R(Studio) console:
Code:
packrat::init()
.libPaths() # test if libpath has changed
install.packages("reshape2") # installs within one of the packrat libpaths
Installing package into ‘C:/R/packRatTest/packrat/lib/x86_64-w64-mingw32/3.4.3’
Assumption would be that you can use and share RStudio Projects, but i think it would be hard to work without them anyway ;).
Try writing your shiny app as a package. You can, somewhat, control that through the description file.
Since you said you're using script take a look at: https://github.com/chasemc/electricShine
Even of you don't use it, hopefully looking at the code will help for things like setting the download repo to be a specific MRAN date.
This question already has answers here:
Run R from dropbox
(2 answers)
Closed 7 years ago.
For a collaborative project can you install RStudio (and R itself) on a shared dropbox folder, as well as run the script from that same location?
If yes, is there a special procedure that should be employed in setting that up? I currently have both R and RStudio installed on my PC. Does the collaborator need to have R installed on their computer as well for this to work?
Sounds like there are two separate aspects to your question:
Can you share the R & RStudio application/executables
Can you share the R scripts/project documents
Regarding 1, to share the application/executables, you could follow the portable Rstudio approach from #hrbrmstr. That's going to require you providing the correct versions for your collaborator's OS. If you are just working with one person, you may find it easier to have them simply download and install RStudio on their own computer.
If your project requires installing custom libraries from CRAN, make sure to communicate this to your collaborator, as libraries you've installed won't be installed for them.
Regarding 2, sharing the R scripts and project documents is straight forward. They should be able to open these documents and execute them on their own machine.
It's possibly easier to install RStudio Server on AWS. I did it and the only thing that was a bit of a pain was managing the users (you need to shell in). Once the users are set up you can set up a shared environment and also each user has their own environment.
I recently discovered a portable version of R and RStudio #
http://rportable.sourceforge.net/
Open source rocks!
At any-rate, I am jumping from pc to pc at my university, and I'd like to get Portable R-studio to recognize Portable R as the default R version. Most computers at the university already have several versions of r-installed, and RStudio uses one of those versions of R. When I go into the Global Options to change the default version, it does not "see" portable R on the USB drive.
I am basically hopping I can run R without constantly having to download packages, specifying the work directory, downloading Scripts, data from Google Drive, etc...
Any suggestions? I am open. Thanks for your help.
I did not need to touch the registry.
I first installed R portable and then R Studio portable, both from Sourceforge.
After launching R Studio for the first time, I was shown the option of choosing the installation of R to be used, as shown in
https://support.rstudio.com/hc/en-us/articles/200486138-Using-Different-Versions-of-R
I browsed to branch \PortableApps\R-Portable\App\R-Portable\bin, where executables are located. There I selected the 64-bit version.
If you want to change later the version used, you open R Studio and go to Tools -> Option -> General -> R Version.
This avoids modifying the registry, with the two advantages of Portable Apps:
Leaving no trace of the app in the system (or, at least, a much milder one).
Being really portable (or, at least, much more so).
On Windows, RStudio uses the system registry to find where installed versions of R are located. You'll need to edit the registry yourself to let it know about new versions. Fortunately you can do this in HKEY_CURRENT_USER so admin rights shouldn't be required. Here are the keys and values you'll want to write:
http://cran.r-project.org/bin/windows/base/rw-FAQ.html#Does-R-use-the-Registry_003f
More detail about how RStudio selects the R version to run here:
https://support.rstudio.com/hc/en-us/articles/200486138-Using-Different-Versions-of-R
The link to R Portable above is a bit misleading. In order to run a portable version of R AND RStudio, you also need the 27MB portable RStudio here. What's even more confusing is that it has the same name as the RPortable file.
It took me a bit of time to figure that one out. Perhaps you could edit your question to point to both for those who wish for an IDE?
And, IMHO, it's not truly portable, because when you move from one machine to another you need to specify the R version on your USB drive and also the work directory. Pity.
I manage to link RStudio (not portable version) to the aforementioned version of R Portable, directly through Global Options -> R Version -> Choose a specific version of R -> Browse,
and the trick was selecting the R-Portable\App\R-Portable folder. Choosing another one doesnt allow RStudio to find the instalation.
Im running RStudio 1.1.463.
Bye!