Installing older version of R package
Solution 1
To install an older version of a package from source (within R):
packageurl <- "http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz"
install.packages(packageurl, repos=NULL, type="source")
If this doesn't work for you and you're on Windows, the reason is probably the lack of an appropriate tool chain for building/compiling packages. Normally you would install a pre-compiled binary from CRAN but they only archive package sources, not binaries.[1] This means you need to install Rtools so that you can compile everything locally. (Note: Rtools is not an R package.)
@shadow's answer below also makes the case that you can use devtools::install_version()
. That's also a good idea, but is also subject to needing Rtools on Windows.
As of September 18, 2015, a new package versions has appeared on CRAN. This relies on the Revolution Analytics MRAN server to install packages for specific versions or dates:
# install yesterday's version of checkpoint, by date
install.dates('checkpoint', Sys.Date() - 1)
# install earlier versions of checkpoint and devtools
install.versions(c('checkpoint', 'devtools'), c('0.3.3', '1.6.1'))
That has the advantage of not requiring Rtools to install binary packages on Windows, but only works going back to 2014-09-17 (when MRAN was launched).
To install an older version from the command line (outside of R):
You can also install a package by using R CMD INSTALL
on the command line (Terminal, Command Prompt, etc.) once you have the package source ("tarball") locally on your machine, for example using wget
(if you have it):
wget http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz
or, if you're on Windows, an equivalent using PowerShell would be:
(new-object System.Net.WebClient).DownloadFile("http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz", "./ggplot2_0.9.1.tar.gz")
or you can just download the source from the CRAN archive via your web browser.
To install from the local file, you can just do:
R CMD INSTALL ggplot2_0.9.1.tar.gz
That should work on any platform (with the same caveat - as above - about needing a tool chain for building packages).
[1]This is no longer entirely true. From March 2016, CRAN has started hosting a "CRAN Archive" server that contains Windows and Mac binaries for very old versions of R (> 5 years old). You can now install directly from this server using install.packages()
. See new R FAQ 7.44 for some details.
Solution 2
The remotes
package offers an install_version
function that can do this directly.
require(remotes)
install_version("ggplot2", version = "0.9.1", repos = "http://cran.us.r-project.org")
Previously, this answer pointed to the devtools
package, which also re-exports the install_version
function. Thanks @MichaelChirico for pointing out that the remotes
package is preferable.
Solution 3
You can download your appropriate version from the link below as a zip file.
http://cran.r-project.org/src/contrib/Archive/ggplot2/
In R Studio: Tools >> Install packages >> Install from: (select drop down)
Package Archive File(.zip, .tar.gz).
Choose your newly-downloaded-package-zip-file and install the package
Solution 4
Pure install.packages
method
See this thread on the r-devel mailing list. In reply to Kurt Wheeler, Kurt Hornik reveals an undocumented feature of the CRAN website to specify the specific version of a package.
This method will work as long as you have all required dependencies already installed:
package = "https://cran.r-project.org/package=svglite&version=1.2.1"
utils::install.packages(pkgs = package, repos = NULL)
Note the URL structure above. This addresses the issue that CRAN has a different URL structure for the latest version than for archived versions:
# Latest version (not available at Archive/svglite)
https://cran.r-project.org/src/contrib/svglite_1.2.1.tar.gz
# Archived version
https://cran.r-project.org/src/contrib/Archive/svglite/svglite_1.2.0.tar.gz
remotes::install_version
method
Another option is to use the remotes::install_version
function. However, you will need to install the remotes
package.
Solution 5
Using install.packages
as described in another answer does not work for me.
The best alternative I found is to use function install_url
from package devtools
.
Another possibility that I have not explored further:
- Download the older .tar.gz source file from the package archives.
- Follow the steps documented on http://rtm.wustl.edu/writings/htrtargz.pdf to install it locally.
Related videos on Youtube
hirolau
Updated on February 19, 2021Comments
-
hirolau about 3 years
I am trying to use Rpy2 and ggplot2 but I get an error. After some searching for the error online, I found that the error occurs because there are changes in the ggplot2 package that are not yet reflected in Rpy2 (for example, see this post (Edit: Link is now dead)).
So I now need to install an older version of ggplot2. Here is pseudo-code for what I want:
install.packages("ggplot2", version='0.9.1')
But
install.packages
does not have aversion
argument. How do I do it?-
isomorphismes about 10 yearstry
checkBuilt
? stackoverflow.com/questions/16503554/…
-
-
hirolau almost 11 yearsThank you, I guess it is the correct way. Too bad I now get:
Warning message: package ‘http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz’ is not available (for R version 2.15.2)
-
Robert Casey over 10 yearsHad a similar issue with Rcpp. This could be due to the R version dependency of the package (DEPENDS: <version>), or it might be that the running R session will not let you perform the update. What I found worked for me was to carry out the update in the manner that Mark Butler (below) suggested (R CMD INSTALL your_version.tar.gz). This was for R 2.15.3 in my case.
-
Tomas about 10 yearsThis doesn't work for me, please follow my question stackoverflow.com/q/22673474/684229 for details.
-
Phani almost 10 years+1, The
R CMD INSTALL
command works on Ubuntu as well. Thanks!! -
Thomas almost 9 years@Antoine Are you on Windows? And, if so, do you have Rtools installed?
-
Antoine almost 9 years@Thomas Thanks for responding. Yes, I am on Windows with Rtools "pseudo-installed" see this thread.
-
Antoine almost 9 years@Thomas I am going to try to run my script on Amazon EC2 to avoid the obvious local problems on my machine (library paths, versions of R vs versions of packages, compiling issues etc.)
-
Luís de Sousa about 6 yearsThe
install.versions
function does not exist. You might need to update your answer. -
Thomas almost 6 yearsActually it does, in the versions package mentioned in the answer...
-
PatrickT over 5 yearscan you keep multiple versions of the same package without having to
install_version
every time you wish to load a specific version? say,library(ggplot2-0.9.1)
-
shadow over 5 years@PatrickT You can do this by using a local library. For example
install_version('ggplot2', version = 0.9.1, lib = 'path_to_library_with_ggplot_0.9.1')
andlibrary(ggplot2, lib.loc = 'path_to_library_with_ggplot_0.9.1')
-
tjjjohnson over 5 yearsyou could also use .libPaths("/dir_for_custom_library_versions") before running install_version
-
András Aszódi over 4 yearsWorked for me (I tried to install an older version of
glmnet
). There was an unsatisfied dependency (foreach
) which I had to install in the usual manner before I installedglmnet
from source. -
MichaelChirico almost 4 yearsNowadays I think
remotes::install_version
is preferable sinceremotes
is a much more lightweight package thandevtools
(devtools::install_version
is just a re-export ofremotes::install_version
)