대학 클러스터 사용 방법을 파악하는 중입니다. 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
설치된 모든 패키지를 볼 수 있으므로로드 된 패키지에 대한 유사한 정보를 나열하는 기능이 있습니까?
답변
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()
답변
packageVersion
어떤 버전의 패키지가로드되었는지 확인할 수 있습니다.
> packageVersion("snow")
[1] ‘0.3.9’
실행중인 R 버전을 확인하고 싶은 것처럼 들리지만 @Justin의 sessionInfo
제안은 갈 길입니다.
답변
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 라이브러리 및 그래픽 라이브러리의 버전을 인쇄합니다.
답변
엄밀히 말하면 현재 모든 답변이 잘못되었습니다. packageVersion
로드 된 패키지의 버전을 반환하지 않습니다. 디스크로 가서 거기에서 패키지 버전을 가져옵니다.
이것은 대부분의 경우에 차이를 만들지 않지만 때로는 그렇지 않습니다. 내가 알 수있는 한, 로드 된 패키지 의 버전을 얻는 유일한 방법 은 다소 해킹입니다.
asNamespace(pkg)$`.__NAMESPACE__.`$spec[["version"]]
pkg
패키지 이름은 어디에 있습니까 ?
편집 :이 기능이 언제 추가되었는지 확실하지 않지만 사용할 수도 있습니다 getNamespaceVersion
.
getNamespaceVersion(pkg)