[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}에 대한 자세한 정보는 여기를 참조하십시오 .

시몬


답변

두 가지 빠른 제안 :

  1. 사용 가보의 batchfiles 이 대량 라이브러리 재배치를 예를 도와; 상기 도구를 말한다. 경고 : 나는 그들을 사용하지 않았습니다.

  2. 설치된 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으로 업그레이드) :

  1. R-2.11.0 설치
  2. 복사 R-2.10.0/library/*R-2.11.0/library/
  3. 덮어 쓸 수 있는지 묻는 메시지가 표시되면 “아니오”로 응답하십시오.
  4. R 2.11.0 시작
  5. 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 업그레이드의 일반적인 문제를 해결하는 방법을 설명하는 주제에 대한 다른 게시물을 작성했습니다.


답변

두 가지 옵션 :

  1. 여기에 내 대답을 구현 하십시오.
  2. StatET과 함께 Eclipse에서 R을 사용하는 경우 실행 구성을 열고 콘솔 탭을 클릭하고 시작 후 R 스 니펫 실행 상자 에서 디렉토리를 선택하여 다음 행을 추가하십시오..libPaths("C:/R/library")