R에 어떤 패키지 버전이로드되어 있는지 확인하는 방법


405

대학 클러스터 사용 방법을 파악하는 중입니다. 2 가지 버전의 R이 설치되어 있습니다. 비표준 위치의 시스템 전체 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에서는 문제없이 작동합니다. (로 스크립트를 시작합니다 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에서 snow를 홈 폴더에 설치하고 코드에 다음 줄을 추가했습니다.

.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
이 문제에 대한 좋은 해결책을 찾았습니까? 내 경험과 R 도움말에서 알 수 있듯이 sessionInfo와 packageVersion 은 패키지가로드 된 위치에 설치된 현재 버전을
RockScience

답변:


519

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()

1
감사. 내 실수는 패키지로드 전에 sessionInfo를 출력하는 것이 었습니다. 결국 올바른 버전의 패키지가로드되었지만 R은 여전히 ​​이전 버전에 대해 불평했습니다. 내 로컬 버전의 R을 설치했으며 모든 것이 매력처럼 작동했습니다.
mpiktas

45
TMI! packageVersion()더 나은 대부분의 경우입니다
루이 매덕스

1
나는 사용하지 않는 것이 좋습니다 sessionInfo. ? sessionInfo 참고 사항 : " '로드 된'패키지 및 네임 스페이스에 대한 정보는 패키지가로드 된 위치에 설치된 현재 버전입니다. 세션 중에 다른 프로세스가 패키지를 변경 한 경우 올바르지 않을 수 있습니다." 따라서 패키지가로드되었는지 여부를 알고 싶다면 더 잘 사용하십시오 "Rmpi" %in% loadedNamespaces(). 특정 위치에 어떤 버전이 설치되어 있는지 알고 싶으면 더 잘 사용하십시오packageVersion(lib.loc = ...)
RockScience

답변을 아래에 가보의 답변을 참조하는 리턴의 버전 현재로드 패키지 (온 디스크 버전과 다를 수 있습니다) : stackoverflow.com/a/37369263/946850
krlmlr

273

packageVersion어떤 버전의 패키지가로드되었는지 확인할 수 있습니다.

> packageVersion("snow")
[1]0.3.9

실행중인 R 버전을 확인하고 싶은 것처럼 들리지만 @Justin의 sessionInfo제안은 갈 길입니다.


24

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 라이브러리 및 그래픽 라이브러리의 버전을 인쇄합니다.


2
R 버전이 아니라 패키지 버전에 대한 질문이었습니다. 그리고 내 코드를 보면을 사용 version합니다.
mpiktas

packinfo[, "Version", drop=F]더 부여합니다 (패키지 이름이 중복되지 않음) 결과.
Marmite Bomber

21

엄밀히 말하면 현재 모든 답변이 잘못되었습니다. packageVersion로드 된 패키지의 버전을 반환하지 않습니다. 디스크로 가서 거기에서 패키지 버전을 가져옵니다.

이것은 대부분의 경우에 차이를 만들지 않지만 때로는 그렇지 않습니다. 내가 알 수있는 한, 로드 된 패키지 의 버전을 얻는 유일한 방법 은 다소 해킹입니다.

asNamespace(pkg)$`.__NAMESPACE__.`$spec[["version"]]

pkg패키지 이름은 어디에 있습니까 ?

편집 :이 기능이 언제 추가되었는지 확실하지 않지만 사용할 수도 있습니다 getNamespaceVersion.

getNamespaceVersion(pkg)

`:::`(pkg, .__NAMESPACE__.)$spec[["version"]]asNamespace()패키지 버전을 얻는 방법과 동의어입니다 .
seasmith

3
이 답변은 매우 중요합니다. packageVersion()최상의 결과만을 보여 installed.packages()주지만 동일한 패키지의 여러 버전이 있고 특정 패키지를로드하면 올바른 대답을 제공하지 않습니다.
calico_ 2016 년

1
hughjonesd.shinyapps.io/rcheology 조기 R 1.7.0 등으로 사용할 수부터 사용할 수 있습니다.
krlmlr

20

다음과 같이 시도해보십시오.

  1. package_version(R.version)

  2. getRversion()


11

GUI 솔루션 :

RStudio를 사용하는 경우 Packages분할 창 에서 패키지 버전을 확인할 수 있습니다 .

여기에 이미지 설명을 입력하십시오


5

R 방법 packageDescription을 사용하여 설치된 패키지 설명을 얻고 버전 $Version은 다음과 같이 사용하십시오 .

packageDescription("AppliedPredictiveModeling")$Version
[1] "1.1-6"

4

이전 답변을 바탕으로 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"

2

오래된 질문이지만 대답은 아닙니다.로드 된 모든 패키지에 대한 빠르고 짧은 개요를 얻는 가장 좋아하는 명령은 다음과 같습니다.

(.packages())

로드 된 모든 패키지에 어떤 버전이 설치되어 있는지 보려면 위의 명령을 사용하여 하위 집합을 만드십시오 installed.packages().

installed.packages()[(.packages()),3]

열 번호 (패키지 버전의 경우 3)를 변경하면 installed.packages()읽기 쉬운 매트릭스에 저장된 다른 정보를 얻을 수 있습니다 . 아래는 버전 번호 및 종속성에 대한 예입니다.

installed.packages()[(.packages()),c(3,5)]

1

시스템에 설치된 R 패키지 버전을 얻으려면 다음 코드를 사용하십시오.

installed.packages(fields = c ("Package", "Version"))

1

help(package="my_package")표시된 버전을 사용 하고 확인하십시오.

이것은 동일한 다른 패키지 버전이 없다고 가정합니다 .libPaths.


0

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"

1
예, 그러나 sessionInfo는 버전 번호도 제공합니다. 필자의 경우 후자가 일반적으로 더 중요합니다.
mpiktas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.