Как узнать, какая версия пакета загружена в R?
Я сейчас разбираюсь в том, как использовать мой университетский кластер. Он имеет 2 версии R. System wide R 2.11 (Debian 6.0) и R 2.14.2 в нестандартном расположении.
Я пытаюсь использовать MPI вместе со снегом. Код, который я пытаюсь запустить, следующий
library(snow)
library(Rmpi)
cl <- makeMPIcluster(mpi.universe.size()-1)
stopCluster(cl)
mpi.quit()
Он работает без проблем на R 2.11. (Я запускаю script с помощью mpirun -H localhost,n1,n2,n3,n4 -n 1 R --slave -f code.R
). Теперь, когда я пытаюсь сделать это с помощью R 2.14.2, я получаю следующее сообщение:
Error: This is R 2.11.1, package 'snow' needs >= 2.12.1
In addition: Warning message:
Итак, кажется, что R загружает версию снега пакета, скомпилированную для R 2.11. Я установил снег под R 2.14 в свою домашнюю папку, и я добавил следующие строки в свой код:
.libPaths("/soft/R/lib/R/library")
.libPaths("~/R/x86_64-pc-linux-gnu-library/2.11")
print(.libPaths())
print(sessionInfo())
print(version)
И результат перед ошибкой подтверждает, что я действительно запускаю R 2.14.2, а моя папка пакетов R сначала находится в пути поиска. Но я все еще получаю ошибку.
Итак, мой вопрос: как определить, какая версия пакета загружена в R? Я могу видеть с installed.packages
все установленные пакеты, так что, возможно, есть функция, которая перечисляет аналогичную информацию для загруженных пакетов?
Ответы
Ответ 1
Вы можете использовать sessionInfo()
, чтобы выполнить это.
> 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
>
Однако, в соответствии с комментариями и ответом ниже, есть лучшие варианты
> packageVersion("snow")
[1] '0,3,9
Или:
"Rmpi" %in% loadedNamespaces()
Ответ 2
Вы можете использовать packageVersion
, чтобы узнать, какая версия пакета загружена
> packageVersion("snow")
[1] ‘0.3.9’
Хотя кажется, что вы хотите посмотреть, какую версию R вы используете, и в этом случае предложение @Justin sessionInfo
- это способ пойти
Ответ 3
Чтобы проверить версию выполнения R: R --version
Или после того, как вы находитесь в оболочке R, напечатайте содержимое version$version.string
ИЗМЕНИТЬ
Чтобы проверить версию установленных пакетов, выполните следующие действия.
После загрузки библиотеки вы можете выполнить sessionInfo ()
Но узнать список всех установленных пакетов:
packinfo <- installed.packages(fields = c("Package", "Version"))
packinfo[,c("Package", "Version")]
ИЛИ для извлечения конкретной версии библиотеки, как только вы извлекли информацию с помощью функции installed.package
, как указано выше, просто используйте имя пакета в первом измерении матрицы.
packinfo["RANN",c("Package", "Version")]
packinfo["graphics",c("Package", "Version")]
Вышеприведенная версия будет печатать версии библиотеки RANN и графической библиотеки.
Ответ 4
Вы можете попробовать что-то вроде этого:
Ответ 5
С технической точки зрения, все ответы в это время ошибочны. packageVersion
не возвращает версию загруженного пакета. Он идет на диск и извлекает версию пакета оттуда.
В большинстве случаев это не изменит ситуацию, но иногда это происходит. Насколько я могу судить, единственный способ получить версию загруженного пакета - довольно хакерский:
asNamespace(pkg)$`.__NAMESPACE__.`$spec[["version"]]
где pkg
- имя пакета.
EDIT: я не уверен, когда эта функция была добавлена, но вы также можете использовать getNamespaceVersion
, это чище:
getNamespaceVersion(pkg)
Ответ 6
GUI-решение:
Если вы используете RStudio, вы можете проверить версию пакета на панели Packages
.
![введите описание изображения здесь]()
Ответ 7
Используйте метод R packageDescription
, чтобы получить установленное описание пакета, а для версии просто используйте $Version
как:
packageDescription("AppliedPredictiveModeling")$Version
[1] "1.1-6"
Ответ 8
В соответствии с предыдущими ответами, это простой альтернативный способ печати R-версии, за которым следуют имя и версия каждого пакета, загруженного в пространство имен. Он работает в ноутбуке Jupyter, где у меня были проблемы с sessionInfo()
и R --version
.
print(paste("R", getRversion()))
print("-------------")
for (package_name in sort(loadedNamespaces())) {
print(paste(package_name, packageVersion(package_name)))
}
Из:
[1] "R 3.2.2"
[1] "-------------"
[1] "AnnotationDbi 1.32.2"
[1] "Biobase 2.30.0"
[1] "BiocGenerics 0.16.1"
[1] "BiocParallel 1.4.3"
[1] "DBI 0.3.1"
[1] "DESeq2 1.10.0"
[1] "Formula 1.2.1"
[1] "GenomeInfoDb 1.6.1"
[1] "GenomicRanges 1.22.3"
[1] "Hmisc 3.17.0"
[1] "IRanges 2.4.6"
[1] "IRdisplay 0.3"
[1] "IRkernel 0.5"
Ответ 9
Используйте следующий код для получения версии пакетов R, установленных в системе:
installed.packages(fields = c ("Package", "Version"))
Ответ 10
Просто используйте help(package="my_package")
и посмотрите на показанную версию.
Это предполагает, что в том же .libPaths
нет других версий пакета.
Ответ 11
Search() может дать более упрощенный список прикрепленных пакетов в сеансе (т.е. без подробной информации, предоставленной sessionInfo())
search {base} - R Документация
Описание: выдает список прикрепленных пакетов. Поиск()
search()
#[1] ".GlobalEnv" "package:Rfacebook" "package:httpuv"
#"package:rjson"
#[5] "package:httr" "package:bindrcpp" "package:forcats" #
#"package:stringr"
#[9] "package:dplyr" "package:purrr" "package:readr"
#"package:tidyr"
#[13] "package:tibble" "package:ggplot2" "package:tidyverse"
#"tools:rstudio"
#[17] "package:stats" "package:graphics" "package:grDevices"
#"package:utils"
#[21] "package:datasets" "package:methods" "Autoloads"
#"package:base"
Ответ 12
Старый вопрос, но его нет среди ответов - моя любимая команда для быстрого и краткого обзора всех загруженных пакетов:
(.packages())
Чтобы узнать, какая версия установлена из всех загруженных пакетов, просто используйте указанную выше команду для подмножества installed.packages()
.
installed.packages()[(.packages()),3]
Изменяя номер столбца (3 для версии пакета), вы можете получить любую другую информацию, хранящуюся в installed.packages()
в удобочитаемой матрице. Ниже приведен пример номера версии и зависимости:
installed.packages()[(.packages()),c(3,5)]