[r] 새로운 버전의 R을 설치하는 무통 방법?
Andrew Gelman은 최근 R에 대한 쉬운 업그레이드 프로세스의 부족 (아마도 Windows보다 Linux보다 관련성이 높음) 에 대해 애도했습니다 . 소프트웨어 설치에서 모든 설정 / 패키지 복사에 이르기까지 업그레이드를 수행하는 데 유용한 기술이 있습니까?
이 제안은 의견에 포함되어 있으며 최근에 사용한 것입니다. 먼저 새 버전을 설치 한 다음 이전 버전에서이를 실행하십시오.
#--run in the old version of R
setwd("C:/Temp/")
packages <- installed.packages()[,"Package"]
save(packages, file="Rpackages")
새 버전에서는 다음과 같습니다.
#--run in the new version
setwd("C:/Temp/")
load("Rpackages")
for (p in setdiff(packages, installed.packages()[,"Package"]))
install.packages(p)
답변
완벽을 기하기 위해이 문제가 발생하지 않도록하는 방법이 있습니다. Dirk가 말했듯이 패키지를 컴퓨터의 다른 디렉토리에 저장하십시오.
install.packages("thepackage",lib="/path/to/directory/with/libraries")
당신은 기본 변경할 수 있습니다 .Library
기능을 사용하여 값을 .libPaths
너무
.libPaths("/path/to/directory/with/libraries")
이 경로를 .Library
변수 의 첫 번째 값으로 설정하고 기본값으로 만듭니다.
이를 더 자동화하려면 R 빌드의 / etc / 디렉토리에있는 Rprofile.site 파일에서이를 지정할 수 있습니다. 그러면 R이로드 될 때마다 자동으로로드되므로 더 이상 걱정할 필요가 없습니다. 지정된 디렉토리에서 패키지를 설치하고로드 할 수 있습니다.
마지막으로 Rprofile.site에 작은 코드가 포함되어있어 새 R 버전을 설치할 때 모든 패키지를 다시 설치할 수 있습니다. 새 R 버전으로 업데이트 하기 전에 목록을 작성하기 만하면 됩니다. 모든 패키지와 함께 업데이트 된 목록이 포함 된 .RData 파일을 사용하여 수행합니다.
library(utils)
## Check necessary packages
load("G:\Setinfo\R\packagelist.RData") # includes a vector "pkgs"
installed <- pkgs %in% installed.packages()[, 'Package']
if (length(pkgs[!installed]) >=1){
install.packages(pkgs[!installed])
}
.Last()
내 Rprofile.site 에 지정하여 packagelist.RData를 만듭니다. 패키지를 설치하면 패키지 목록이 업데이트됩니다.
.Last <- function(){
pkgs <- installed.packages()[,1]
if (length(pkgs) > length(installed)){
save(pkgs,file="G:\Setinfo\R\packagelist.RData")
}
}
새 R 버전을 설치할 때 필요한 요소를 Rprofile.site 파일에 추가하기 만하면 모든 패키지가 다시 설치됩니다. 어쨌든 Rprofile.site를 조정해야합니다 (총 대비 사용, Tinn-R에 대한 추가 코드 추가). 따라서 여분의 작업은 아닙니다. 모든 패키지를 새로 설치하는 데 추가 시간이 걸립니다.
이 마지막 비트는 원래 질문에 솔루션으로 제공된 것과 동일합니다. 먼저 “설치된”목록을 얻는 것에 대해 걱정할 필요가 없습니다.
CRAN에서 설치되지 않은 패키지가있는 경우에도이 기능은 완벽하게 작동하지 않습니다. 그러나이 코드도 쉽게 확장 할 수 있습니다.
답변
이것은 물론 오래된 질문이지만 방금 찾은 새로운 쉬운 대답 (Windows에서만 작동)이있을 수 있습니다.
install.packages("installr")
require(installr)
updateR()
이를 수행하는 가장 좋은 방법은 RGui 시스템입니다. 모든 패키지가 새 폴더로 전송되고 이전 패키지는 삭제되거나 저장됩니다 (둘 중 하나를 선택할 수 있음). 그런 다음 RStudio를 다시 열면 업데이트 된 버전을 사용하고 있음을 즉시 인식합니다. 나에게 이것은 매력처럼 작동했습니다.
{installr}에 대한 자세한 정보는 여기를 참조하십시오 .
시몬
답변
두 가지 빠른 제안 :
-
사용 가보의 batchfiles 이 대량 라이브러리 재배치를 예를 도와; 상기 도구를 말한다. 경고 : 나는 그들을 사용하지 않았습니다.
-
설치된 R 버전의 ‘filetree’내에 라이브러리를 설치하지 마십시오. Windows에서는 R을 C : / opt / R / R- $ version에 넣을 수 있지만 다음 스 니펫을 사용하여 모든 라이브러리를 C : / opt / R / library /에 배치하면 처음에 문제가 완화됩니다.
$ cat .Renviron # this is using MSys/MinGW which looks like Cygwin
## Example .Renviron on Windows
R_LIBS="C:/opt/R/library"
답변
CRAN이 아닌 패키지가있는 경우 위에서 제안한 방법이 완전히 작동하지 않습니다. 예를 들어 개인 패키지 또는 CRAN이 아닌 사이트에서 다운로드 한 패키지입니다.
Windows에서 선호하는 방법 (2.10.1에서 2.11.0으로 업그레이드) :
- R-2.11.0 설치
- 복사
R-2.10.0/library/*
에R-2.11.0/library/
- 덮어 쓸 수 있는지 묻는 메시지가 표시되면 “아니오”로 응답하십시오.
- R 2.11.0 시작
- R 명령을 실행하십시오
update.packages()
답변
질문에 제공된 솔루션과 관련하여 이미 새 버전을 설치 한 경우 이전 버전의 R을 실행하기가 쉽지 않을 수 있습니다. 이 경우 여전히 다음과 같이 이전 R 버전에서 누락 된 모든 패키지를 다시 설치할 수 있습니다.
# Get names of packages in previous R version
old.packages <- list.files("/Library/Frameworks/R.framework/Versions/3.2/Resources/library")
# Install packages in the previous version.
# For each package p in previous version...
for (p in old.packages) {
# ... Only if p is not already installed
if (!(p %in% installed.packages()[,"Package"])) {
# Install p
install.packages(p)
}
}
( list.files()
첫 번째 코드 줄의 인수 는 이전 버전의 패키지 폴더가 모두있는 이전 R 버전의 라이브러리 디렉토리에 대한 경로 여야합니다. 현재의 경우이 값은 "/Library/Frameworks/R.framework/Versions/3.2/Resources/library"
입니다. 이전 R 버전이 3.2가 아니거나 Windows를 사용하는 경우
이 if
명령문은 다음과 같은 경우 패키지가 설치 되지 않았 음을 확인합니다.
- 이미 새로운 R 버전으로 설치되었거나
for
루프 의 이전 반복에 설치된 패키지의 종속성으로 설치되었습니다 .
답변
Dirk의 제안에 따라 Windows에서 R 코드를 작성하는 방법은 다음과 같습니다. Windows XP에서 R을 쉽게 업그레이드하는 방법
업데이트 (15.04.11) : Windows 7에서 R 업그레이드의 일반적인 문제를 해결하는 방법을 설명하는 주제에 대한 다른 게시물을 작성했습니다.