Upgrading R on Windows is not easy. While the R FAQ offer guidelines, some users may prefer to simply run a command in order to upgrade their R to the latest version. That is what the new {installr} package is all about.
The {installr} package offers a set of R functions for the installation and updating of software (currently, only on Windows OS), with a special focus on R itself. To update R, you can simply run the following code:
# installing/loading the package:
if(!require(installr)) {
install.packages("installr"); require(installr)} #load / install+load installr
# using the package:
updateR() # this will start the updating process of your R installation. It will check for newer versions, and if one is available, will guide you through the decisions you'd need to make.
Running this function will perform the following steps:
Check what is the latest R version. If the current installed R version is up-to-date, the function ends (and returns FALSE)
If a newer version of R is available, you will be asked if to review the NEWS of the latest R version – in order to decide if to install the
newest R or not.If you wish it – the function will download and install the latest R version. (you will need to press the "next" buttons on your own)
Once the installation is done, you should press "any-key", and the function will proceed with copying all of your packages from your old (well, current) R installation, into your newer R installation.
You can then erase all of the packages in your old R installation.
After your packages are moved (and the old ones possibly erased), you will get the option to update all of your packages in the new version of R.
Lastely – you can open the new Rgui and close the current session of your old R. (This is a bit buggy in version 0.8, but has been fixed in version 0.8.1)
If you know you wish to upgrade R, and you want the packages moved (not copied, MOVED), you can simply run:
# installing/loading the package:
if(!require(installr)) { install.packages("installr"); require(installr)} #load / install+load installr
updateR(F, T, T, F, T, F, T) # install, move, update.package, quit R.
Since the various steps are broken into individual functions, you can also pick and choose what to run using the relevant function:
# installing/loading the package:
if(!require(installr)) { install.packages("installr"); require(installr)} #load / install+load installr
# step by step functions:
check.for.updates.R() # tells you if there is a new version of R or not.
install.R() # download and run the latest R installer
copy.packages.between.libraries() # copy your packages to the newest R installation from the one version before it (if ask=T, it will ask you between which two versions to perform the copying)
If you like using the global library system, you can run the following in the old R:
# installing/loading the package:
if(!require(installr)) { install.packages("installr"); require(installr)} #load / install+load installr
updateR(F, T, F, F, F, F, T) # only install R (if there is a newer version), and quits it.
And then run the following in the new version of R:
source("https://www.r-statistics.com/wp-content/uploads/2010/04/upgrading-R-on-windows.r.txt")
New.R.RunMe()
The {installr} package also offers functions for installing various other software on Windows. These functions include: install.pandoc (which was mentioned on this blog recently), install.git, install.Rtools, install.MikTeX, install.RStudio, and a general install.URL and install.packages.zip functions. You can see these further explained in the package’s Reference manual.
Feature requests, bug reports – and your help in improving the package
You can see the latest version of installr on github, where you can also submit bug reports (you may also just leave a comment in this post). Since this is my first R package, I might have (e.g: probably have) missed something here or there. So any comment on how to improve my code/documentation/R-fu, will be most welcomed (here or on github).
If this type of coding is fun/easy for you, you can help me improve this package on github. Cool new features I think may be added (by me or others) are:
- Add an uninstall.R function – to remove the old R version.
- Add more support for upgrading R for people who uses a global library for their packages.
- Add support for Linux and Mac! This one I am less likely to do on my own – and would love to see someone else extend my code to other operation systems.
- GUI – add a menu based option for running updateR. Something like help->”check for updates” would be great. (p.s: this idea came from Yihui Xie)
- add even more install.software functions. If you have functions for which you’d like to be able to easily install them – just let me know and it could be included in future releases.
Thanks
Final note, I would like to thank the many people who have developed WONDERFUL tools for making R package development possible (and even somewhat fast), on Windows. These include Prof. Brian Ripley and Duncan Murdoch for Rtools, also Uwe Ligges for his work on CRAN, Hadley Wickham for devtools (in general, and for its documentation), Yihui Xie for roxygen2, JJ and others in the RStudio team for RStudio, the people behind git and github, and more. There are probably more things I can thank these people for, and many more people I should thank, but I can’t figure who you are probably (feel free to e-mail me, I appreciate you work even if it is not clear to me your are behind it).
This is terrific work I didn’t know existed. It would be awesome to see it extended to Mac and Linux as well (which is likely much easier). This would enable other packages to call your package to install programs easily or just direct the users to directly ger installr to install programs.
Hi Tyler,
Thank you for your kind words 🙂
I would love to see this adapted for other OS’s, and/or other packages. If you come across packages which might benefit from it – feel invited to let me know 🙂
Cheers,
Tal
I use a library folder placed in My Documents and referenced in $HOME/.RProfile and the update process is just: Install new R. Done, nothing else to be done.
Hi Hans,
What OS do you use?
And how does R know to read the .RProfile, if it was just installed?
Cheers,
Tal
In this case I’m referencing Win7. It will by default look for $HOME/.Rprofile (C://Users/ME/My Documents/.Rprofile) if exists load it, else check for $R_HOME/etc/Rprofile.site etc. Only issue I had was creating the file, since you can’t in the Explorer (file can’t start with . sillyness), but you can from R’s file.create and then edit via Notepad(++). I use Ubuntu and Mac too with the same user owned library setup. Ubuntu upgrade via apt-get upgrade and Mac via normal installer. No need to migrate packages between versions.
As Per: https://cran.r-project.org/doc/manuals/r-release/R-admin.html#Managing-libraries you can also set an environment variable to do this.
Hi Hans,
o.k, several things:
1) The idea of using a global library folder (which you described), is indeed (in my view) a good one. In fact, that I wrote some code that will grantee it every time you upgrade your R system, please see:
https://www.r-statistics.com/2011/04/how-to-upgrade-r-on-windows-7/
(it is based on the environment variable you mentioned in your next post)
2) I am not sure about using the (C://Users/ME/My Documents/.Rprofile) for this purpose. I can understand why it would work if you just start up R (since they always set the default working library to be my documents). However, for someone who uses RStudio projects (where the default working directory is different every time), I suspect in this case the .Rprofile will not be loaded first (although it is worth checking to make sure).
3) Regarding Ubuntu and Mac, if you’d be interested in helping to extend the code to these OSs, feel free to e-mail me, and I’ll be happy to work this out with you.
With regards,
Tal
I have a problem…. “Warning in install.packages :
package ‘installr’ is not available (for R version 2.15.2)”
Hi Duk, this is likely because it hasn’t reached your CRAN mirror yet. You can either try again, or switch to a different mirror.
I’d be happy to hear if this has helped or not.
HI!
I’ve installed package from file and it’s working.
Great job, thanks.
I’m glad it worked out 🙂
Cheers,
Tal
This is great, thank you—however, I get this error message:
> if(!require(installr)) { install.packages(“installr”); require(installr)} #load / install+load installr
Loading required package: installr
Warning message:
package ‘installr’ was built under R version 2.15.3
> updateR() # this will start the updating process of your R installation.
There is a newer version of R for you to download!
You are using R version: 2.15.1
And the latest R version is: 2.15.3
Error in !install_R : ‘install_R’ is missing
Hi AC,
This is indeed a bug, thanks for catching it.
Could you please try this again by typing:
updateR(install_R = TRUE)
And let me know if this time it works fine for you?
I’ve fixed the bug in the devel version:
https://github.com/talgalili/installr/commit/3baaf508f617a4015ee59ea543d133e288c3fe5c
And the next time I’ll update the package to CRAN, there would not be this problem.
With regards,
Tal
Hi Tall,
typing (install_R=TRUE) instead of (“install_R=TRUE”), now it works
Regards
Great 🙂
Works great now, Tal. Thanks for creating this package/function!
AC
My pleasure AC 🙂
BTW, I’ve just update the package (on github, not yet on CRAN), so that all of this process will use window prompts (e.g: full GUI), instead of command line “yes/no”. And the package now adds a menu for “update R” when using the Rgui.
In short, I think this will be even easier in future updates.
nice! thank you!!
Works great now, Tal. Thanks for creating this package/function!
AC
Hi,
I get the following message
updateR(“install_R = TRUE”) # this will start the updating process of your R installation.
There is a newer version of R for you to download!
You are using R version: 2.15.2
And the latest R version is: 2.15.3
Error en !install_R : install_R’ esta perdido
Hi JC,
Please try again without the quotes:
updateR(install_R = TRUE)
(I’ll fix the blog post too)
update: notice that you can now use
updateR()
And it would just ask you if you wish to update R (if a newer version exists)
This is a brilliant idea. Have you thought of trying to get this added to R-Studio?
Hi Charles,
Thank you 🙂
I didn’t think of asking RStudio, it’s a good idea. I thought it would actually be nice to have it (eventually) added to R itself (though I imagine that if ever this were to happen, it would be done differently than the way I’ve implemented it in the package).
With regards,
Tal
Hi Tal,
I am wondering if there is a way to automate this process of updating R (or adding a function to do so), e.g., some way to automatically run the updateR function above every few months?
This question is partially due to the fact that I will probably forget about this package and its utility (not because of its relevance, of course!) and some automated process will make sure I am being efficient when updating R.
Thanks,
AC
Hi AC,
That is a good idea, which I’ve considered on adding, but wasn’t sure people would use it.
Since you mentioned it, I will add it to the “TODO” list, and update on this blog if/when it is done 🙂
With regards,
Tal
Dear Tal
I like it. Nice idea. Is there a way to copy/move Rprofile.site from one installation to the next such as “C:Program FilesRR-2.15.2etcRprofile.site” to “C:Program FilesRR-2.15.3etcRprofile.site”?
Hello dear Farrel,
I’m happy you like it 🙂
I will add this to the suggestions on my TODO list and will look into implementing it in future releases.
With regards,
Tal
One problem you may run into on Windows is that C:Program FilesRR-2.15.3etc is a protected location. Even when I want to manually edit it I have to open notepad application as an administrator and then open Rprofile.site otherwise Windows 8 does not allow me to save it.
Hi Farrel,
I agree.
But:
1) I don’t think it would cause problems in copying it. and
2) I generally encourage people to NOT install R on the C directory in Windows 7 (if a D: drive is available)
Cheers,
Tal
How do you make installr copy your packages when they are in “C:Usersnot-admin-userDocumentsRwin-library3.0”
to 3.0.1
Is installr only intended for admin use?
Thankd
Hi Eric,
installr is modular and offers procedures for several steps:
1) checking for a new version of R
2) installing a new version
3) copying of packages from one folder to the other.
The two later stages do require admin privileges. Also, the copying of packages assumes you wish to move them from the default library folder of the old R to the one of the new R. You can also only use the install.R() function and take care of the package folders on your own.
Personally, I use the global library folder system (you can see more about this from this link: https://www.r-statistics.com/2011/04/how-to-upgrade-r-on-windows-7/
)
Does this help?
With regards,
Tal
I am very new to R and installed v2.15.2 last year. Tried to install packages to it recentaly and it wouldn’t run and needed to update. Thank for putting this together. Took me a little time to work thru some issues, but was able to update to v3.0 done. Now I am working on getting my database setup. Thank You for putting this package together and providing support.
You’re welcome Doug,
I am glad you found the package helpful. Thank you for saying a good word, you brought a smile to my face.
Best,
Tal
Could you please help me to install MPA Statistics into R.
Hi Guillermo,
Could you please send me relevant links for me to better understand your question?
Hi Tal, Thank you for this wonderful package. The current latest version of R is 3.0.1. The one I have installed on my computer is 2.15.2. Is there a way to upgrade to 2.15.3 instead of the latest 3.0.1 using installr()
I want to to move to 2.15.3 becuase it seems like most of the packages I use are built for 2.15.3. I am not sure if there is enough package support for 3.0.1 or if if even matters?
Hi Tal, Thank you for this wonderful package. The current latest version of R is 3.0.1. The one I have installed on my computer is 2.15.2. Is there a way to upgrade to 2.15.3 instead of the latest 3.0.1 using installr()
I want to to move to 2.15.3 becuase it seems like most of the packages I use are built for 2.15.3. I am not sure if there is enough package support for 3.0.1 or if if even matters???
Hi Tal, Thank you for this wonderful package. The current latest version of R is 3.0.1. The one I have installed on my computer is 2.15.2. Is there a way to upgrade to 2.15.3 instead of the latest 3.0.1 using installr()
I want to to move to 2.15.3 becuase it seems like most of the packages I use are built for 2.15.3. I am not sure if there is enough package support for 3.0.1 or if if even matters?
Hi guest,
Which packages do you use which can not be used on 3.0.1?!
Cool! Thank you very much for this package!
With pleasure, tell your friends about it 🙂
Hi Tal, It is very interesting to know about the package.
I have R version 1.14.1 release (2011.12.22), recently I installed package(CAMAN) but it did not load in my system, do you think it is because I have an older R version? I wanted to upgrade the R version to the latest, but I am afraid my older self-written programs will not run successfully after the upgrade. Pls advice me accordingly. thank you.
Hello Yusuf,
Well, I am not sure if installr will work on R version 1.14.1 or not.
In your case I would suggest manually download and install the newer version of R, and whenever you would see you are missing a package you had to re-install it.
Please feel welcome to share with us if you have any insights regarding this upgrade.
With regards,
Tal
Thanks Tal. This was very useful.
Thank you very much Shruti 🙂
Please also see other posts tagged with “installr”, as I have added more features, and nice menu-based navigation:
https://www.r-statistics.com/tag/installr/
With regards,
Tal
Love it!
Thanks Tal!
Thank you very much Kay 🙂
Please also see other posts tagged with “installr”, as I have added more features, and nice menu-based navigation:
https://www.r-statistics.com/tag/installr/
With regards,
Tal
Tal
First time user of your package and I cannot tell you how thankful I’m since I had over 400 packages to transfer between versions.
Thank you once again!!
Thank you very much Sree 🙂
I’m glad to read that my package was helpful to you.
With regards,
Tal
Thank you so much for this. I was lost without it!
Thanks Keona,
My pleasure.
Thank you for this Tal – really useful! I put off upgrading R because of the hassle! Now I can do ity easily. I was using RStudio on Windows7 64bit, and the process works fine. When the process asked me to open a new gui I said No, to quit R I said No, and then I quit RStudio manually.
Thank you for the kind words Peter.
p.s: a newer version of installr (0.13.3) to get accepted to CRAN, which has a few more features which I hope to write about in the near future.
With regards,
Tal
Thank you so much for your helpful message.
My pleasure.
Thanks for the package. It appears to have a wierd interaction with bioconductor packages, which causes the bioconductor package to get confused about the version. I used installr() to upgrade from 3.0.2 to 3.10. After that, the Bioconductor install script (biocLite) continually failed with version complaints.
I installed a clean version of 3.1.0 and biocLite worked just fine. I haven’t pursued it any further.
Thank you for the report Bill. If you happen to find out why that is, I would be happy to know about it.
Thanks Tal, it was very easy to upgrade to latest version along with packages.
My pleasure. 🙂
This really is a life saver ….
My pleasure Peter. 🙂
Smooth as butter. Great work.
Thanks Amar.
Worked perfectly. Thanks a lot!
I’m glad to hear it.
Good post! Thanks,
You’re welcome Harry. Thanks for saying it.
Great job!!
Two shortcomings (not bugs) I had, unless I made a mistake, was that the RProfile.site wasn’t copied from the previous version’s etc folder, and R Studio was still working with the previous version of R, but I’m guessing from other posts that the aim wasn’t extended towards R Studio yet.
Hi there,
Regarding RStudio – that depends on the way it is set for you. They have an option to work with a specific version of R, or with the latest version installed. If you choose the later, it should work fine.
Regarding RProfile.site, this is a feature in the installr version on github, it was not yet made public in CRAN. Which version of installr did you use?
wow, just trid this to update to 3.1.1. GREAT HELP!!!
I’m glad it helped Xueying.
Thank you so much for this guidance! 🙂 It really helped out!
Wow! I have to work in Windows now, and your package has made my life sooo much easier!
thank you very much
Jarek
Very useful package! Thanks! All the best!
I am R (windows) newbie. This package worked very well for me. Thank you!
Thanks, my pleasure 🙂
Thank you so much, Tal.
It works like a dream and I no longer fear updating my R installation!
Best,
Mark
I’m glad it helped Mark 🙂
Cheers,
Tal
What if you don’t want to update to the newest version, but to an intermediate one? Thanks in advance.
HI Victor,
That is currently not an option. You can download an older version manually from here:
https://cran.r-project.org/bin/windows/base/old/
Thanks for your reply. I guess I will just update to the latest version. Fire Safety, here I come!
Hello Tal,
I just installed Fire Safety, only to discover to my utter dismay that some packages did not update and I cannot reinstall them, cos I get a warning that the package is not available in R 3.2.2.
What do you suggest I do?
Try a different CRAN mirror, and see if that solves the problem.
Everything is working fine now. Thanks for your support.
Great 🙂
Error in file(con, “r”) : cannot open the connection
Please run
setInternet2(TRUE)
before using the other functions, and see if that helps.
Thanks so much, helped a lot!
Hello,
I consider an update from version 3.1.0 to 3.2.3, which will be released next week on December 10, 2015.
Long time ago, I installed R, 64 bits only, in folder “C:/Code/R-310/”.
system.PATH() detects it properly (for clarity, I replaced double anti-slashs by /) :
“C:/Code/Rtools/bin”
“C:/Code/Rtools/gcc-4.6.3/bin”
“C:/Code/R-310/bin/x64”
“C:/Code/R-310/share/texmf/tex/latex”
“C:/Program Files/MiKTeX29/miktex/bin/x64”
“C:/MinGW/bin”
“C:/MinGW/lib”
Questions are :
1/ where updateR will install the new version 3.2.2 ?
– with default options ?
– by using updateR(fast = TRUE) ?
2/ Can I force the folder “C:/Code/R-322/” ?
3/ I will have also to update RTools ? Is a dual install (RTools31, RTools33) possible or not ? How does installr handle it ?
Thanks. Patrice
Hi Patrice,
If you just run:
installr()
It will download and allow you to run the installer wherever you want.
If you want to also copy the packages and update them you will need to use
updateR()
It should work fine as long as you don’t install your R version in the same folder, but in the folder above it (i.e.: code – which is what you seem to want to do).
Regarding rtools – I have no clue.
You can run
install.rtools()
to download it, and run the installer, and see if it works.
Best,
Tal
I have just updated my R from version 3.2.2 to 3.2.3. I want to remove the old version. How can I do that without problems?
If you installed R on a different folder, and copied all the packages – then you can use the uninstall wizard from Windows to remove the older version.
There is also a file called “unins000.exe” in the folder of the old R installation which you can double click to uninstall R.
tried to update R on Linux Centos7 but failed due to path issue. Any solution?
[root]# sudo su – -c “R -e \”installr::updateR()\”
Error in file(con r ) cannot open the connection
Calls: -> check.for.updates.R -> readLines -> file
In addition: Warning message:
In get.installed.R.folders() :
Could not find any R installation on your system. (You might have installed your R version on ‘c:\R’ without sub folders…
Execution halted
Hi Ryo,
installr only works for Windows.
If you’ll find a good resource on upgrading R for linux, it might help adding it to installr.
Best,
Tal
Hi Tal,
I am upgrading my R 2.15.1. My first problem while was using upgradeR() is the error message “Error in file(con, “r”) : cannot open the connection”. Then I used setInternet2(TRUE) to fix it. After that, I got the error message “Error in strsplit(version_with_dots, “\\.”)[[1]] : subscript out of bounds”. I looked your post, and tried to use the devtools::install_github(‘talgalili/installr’) to upgrade the installr. However, it fails and the message indicates that the installr requires the dependency ‘curl’, but “package ‘curl’ is not available (for R version 2.15.1)”. Could you please advice how to fix it so that I can upgrade the R 2.15.1? Thanks,
Just to let everyone know this was fixed in installr version 0.17.7
You can always get the latest version of installr using devtools:
devtools::install_github(‘talgalili/installr’)
Tal
When trying to run udateR() I get this error message: Error in loadNamespace(name) : there is no package called ‘stringr’
Thanks
Robin
Try first running:
install.packages(“stringr”)
Hello Tal, it is nor working for me. After 1) setInternet2(TRUE), 2) library(installr) und 3) updateR() I get the message use setIntenet2(TRUE). My R-version is 3.1.3 and use internet explorer per default. Thank you! Best regards, Sergio.
Installed the new version of r withour any problem.. thanks a lot for this great package!
hello Sir,
I am a new user of R.I want to install Rcpp package but problem occurred as unable to move….please help me.
package ‘Rcpp’ successfully unpacked and MD5 sums checked
Warning: unable to move temporary installation ‘C:\Users\Admin\Documents\R\win-library\3.4\file15bc1b10b0a\Rcpp’ to ‘C:\Users\Admin\Documents\R\win-library\3.4\Rcpp’
installed R using install.R()
now i am not able to find my user library packages in R studio including installr
can you please tell me how to retrieve back all the packages which i was using?
Hi Tamil,
You can run:
copy.packages.between.libraries()
in the old R install, and see if this solves the issue.
Alternatively, a longer solution is to use the instructions here:
https://www.r-statistics.com/2010/04/changing-your-r-upgrading-strategy-and-the-r-code-to-do-it-on-windows/
And in the future, it is better to use updateR() and not install.R()
Cheers,
Tal
Hi Tal,
I do can installr package but when type library(installr), RStudio doesnt find the package. Also, cant use updater() nor updateR(install_R=TRUE). Any clue?
This package does not seem to work on Windows 10. The packages are not copied.
Hi Tal!
Thank you very much for your great package! I’m using your package “installr” and the “updateR()” function wihin the R Console in Windows 7 and Windows 10.
During the update process of “updateR()” when choosing to update the packages in the newely installed R, do the packages in the ‘User Library’ of the old R Version also get updated (which have to be copied manually to the User Library of the new R Version), besides the ones of the ‘Site Library’ automatically copied/moved by the update process?
Thanks for your Feedback!
Best, Gregor
Hi Tal!
Thank you very much for your great package! I use your package “installr” with “updateR()” within the R Console on Windows 7 and 10.
During the update process of “updateR()” do the packages of the ‘User Library’ (which have to be copied manually into the new ‘User Library’ of the newely installed R Version) also get updated like the ones in the ‘Site Library’ automatically copied/moved to the new R Version by the update process?
Thanks for your feedback!
Best, Gregor
This is all fine and dandy, except “IT DON’T WORK”. What do we do when we get
Error in library(installr) : there is no package called ‘installr’
This package is for Windows. If you’re on mac, try the updateR package. And if you can’t find the package try changing your CRAN mirror.