How to find out which package version is loaded in R?
Solution 1
You can use sessionInfo()
to accomplish that.
> sessionInfo()
R version 2.15.0 (2012-03-30)
Platform: x86_64-pc-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 LC_PAPER=C LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] graphics grDevices utils datasets stats grid methods base
other attached packages:
[1] ggplot2_0.9.0 reshape2_1.2.1 plyr_1.7.1
loaded via a namespace (and not attached):
[1] colorspace_1.1-1 dichromat_1.2-4 digest_0.5.2 MASS_7.3-18 memoise_0.1 munsell_0.3
[7] proto_0.3-9.2 RColorBrewer_1.0-5 scales_0.2.0 stringr_0.6
>
However, as per comments and the answer below, there are better options
> packageVersion("snow")
[1] ‘0.3.9’
Or:
"Rmpi" %in% loadedNamespaces()
Solution 2
You can use utils::packageVersion
to see what version of a package is installed:
> packageVersion("snow")
[1] ‘0.3.9’
A package will not be ‘found’ unless it has a
DESCRIPTION
file which contains a validVersion
field. Different warnings are given when no package directory is found and when there is a suitable directory but no validDESCRIPTION
file.
Although it sounds like you want to see what version of R you are running, in which case @Justin's sessionInfo
suggestion is the way to go.
Solution 3
Technically speaking, all of the answers at this time are wrong. packageVersion
does not return the version of the loaded package. It goes to the disk, and fetches the package version from there.
This will not make a difference in most cases, but sometimes it does. As far as I can tell, the only way to get the version of a loaded package is the rather hackish:
asNamespace(pkg)$`.__NAMESPACE__.`$spec[["version"]]
where pkg
is the package name.
EDIT: I am not sure when this function was added, but you can also use getNamespaceVersion
, this is cleaner:
getNamespaceVersion(pkg)
Solution 4
To check the version of R execute : R --version
Or after you are in the R shell print the contents of version$version.string
EDIT
To check the version of installed packages do the following.
After loading the library, you can execute sessionInfo ()
But to know the list of all installed packages:
packinfo <- installed.packages(fields = c("Package", "Version"))
packinfo[,c("Package", "Version")]
OR to extract a specific library version, once you have extracted the information using the installed.package
function as above just use the name of the package in the first dimension of the matrix.
packinfo["RANN",c("Package", "Version")]
packinfo["graphics",c("Package", "Version")]
The above will print the versions of the RANN library and the graphics library.
Solution 5
You can try something like this:
package_version(R.version)
getRversion()
mpiktas
* denotes convolution, $\cdot$ denotes multiplication I am the developer of the midasr R package: http://mpiktas.github.io/midasr/ and you cand find me on Google+: https://plus.google.com/112784314334842289710/ Github: https://github.com/mpiktas and https://github.com/vzemlys
Updated on July 08, 2022Comments
-
mpiktas almost 2 years
I am in a process of figuring out how to use my university cluster. It has 2 versions of R installed. System wide R 2.11 (Debian 6.0) and R 2.14.2 in non-standard location.
I am trying to use MPI together with snow. The code I am trying to run is the following
library(snow) library(Rmpi) cl <- makeMPIcluster(mpi.universe.size()-1) stopCluster(cl) mpi.quit()
It works without the problems on R 2.11. (I launch the script with
mpirun -H localhost,n1,n2,n3,n4 -n 1 R --slave -f code.R
). Now when I try to do it with R 2.14.2, I get the following message:Error: This is R 2.11.1, package 'snow' needs >= 2.12.1 In addition: Warning message:
So it seems that R loads the package snow version compiled for R 2.11. I've installed snow under R 2.14 into my home folder and I added the following lines to my code:
.libPaths("/soft/R/lib/R/library") .libPaths("~/R/x86_64-pc-linux-gnu-library/2.11") print(.libPaths()) print(sessionInfo()) print(version)
And the output before the error confirms that I am indeed running R 2.14.2 and my R packages folder is first in search path. But I still get the error.
So my question is how do I determine which version of package is loaded in R? I can see with
installed.packages
all the packages which are installed, so maybe there is some function which lists similar information for loaded packages? -
mpiktas almost 12 yearsThe question was about package version, not R version. And if look at my code, I use
version
. -
mpiktas almost 12 yearsThanks. My mistake was to output sessionInfo before the package loading. In the end it turned out that the correct version of package was loaded, but R still complained about the old version. Installed my own local version of R and everything worked like a charm.
-
Louis Maddox about 9 yearsTMI!
packageVersion()
is much better in most cases -
RockScience over 8 yearsI would not advise to use
sessionInfo
. See the Note of ?sessionInfo: "The information on ‘loaded’ packages and namespaces is the current version installed at the location the package was loaded from: it can be wrong if another process has been changing packages during the session." So: if you want to know wether the package is loaded or not, better use"Rmpi" %in% loadedNamespaces()
; if you want to know which version is installed in a specific location, better usepackageVersion(lib.loc = ...)
-
seasmith over 7 years
`:::`(pkg, .__NAMESPACE__.)$spec[["version"]]
is a synonym of theasNamespace()
method of getting the package version. -
calico_ almost 7 yearsThis answer is so important.
packageVersion()
only shows you the top result ininstalled.packages()
but if you have multiple version of the same package, and you load one specifically, it won't give you the right answer. -
mpiktas over 6 yearsYes, but sessionInfo gives the version number too. In my case the latter is usually more important.
-
Marmite Bomber about 5 years
packinfo[, "Version", drop=F]
gives even more pretty result (package name is not duplicated). -
krlmlr almost 5 yearsPer hughjonesd.shinyapps.io/rcheology it's been available since available as early as R 1.7.0.
-
krlmlr almost 5 yearsSee Gábor's answer below for an answer that returns the version of a currently loaded package (which may be different from the on-disk version): stackoverflow.com/a/37369263/946850
-
dpprdan over 3 yearsIt seems that
packageVersion
does return the version of the loaded package by default. The docs for thelib.loc
argument read: "The default value ofNULL
corresponds to all libraries currently known. If the default is used, the loaded packages and namespaces are searched before the libraries." Emphasis mine. -
Dan Chaltiel over 2 yearsThis answer clearly wins for me as you can use it to write neat conditions. See my answer below for an example.
-
Salim B over 2 yearsThere's a convenience function
utils::packageVersion()
that directly parses theVersion
field, see stackoverflow.com/a/11103291/7196903