programing

새로운 버전의 R을 설치하는 고통 없는 방법은 무엇입니까?

linuxpc 2023. 6. 15. 21:37
반응형

새로운 버전의 R을 설치하는 고통 없는 방법은 무엇입니까?

Andrew Gelman은 최근 R에 대한 쉬운 업그레이드 프로세스의 부족을 한탄했습니다(아마도 Linux보다 Windows에서 더 적합할 것입니다).소프트웨어 설치부터 모든 설정/패키지 복사에 이르기까지 업그레이드를 할 수 있는 좋은 방법을 알고 있는 사람이 있습니까?

이 제안은 댓글에 포함되어 있었고 제가 최근에 사용하고 있는 것입니다.먼저 새 버전을 설치한 다음 이전 버전에서 다음을 실행합니다.

#--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 프로파일에서 이 작업을 지정할 수 있습니다.R 빌드의 /etc/ 디렉토리에 있는 사이트 파일입니다.그러면 R이 로드될 때마다 자동으로 로드되므로 더 이상 걱정할 필요가 없습니다.지정된 디렉터리에서 패키지를 설치하고 로드하기만 하면 됩니다.

마지막으로, 제 R 프로필에 작은 코드가 포함되어 있습니다.새 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])
}

제가 패키지 리스트를 작성합니다.지정에 의한 RD 데이터.Last() Rprofile.html Rprofile에 .site().설치하면 패키지 됩니다.

.Last <- function(){
  pkgs <- installed.packages()[,1]
  if (length(pkgs) > length(installed)){
    save(pkgs,file="G:\Setinfo\R\packagelist.RData")
  }
}

새로운 R 버전을 설치할 때 필요한 요소를 R 프로파일에 추가하기만 하면 됩니다.사이트 파일 및 모든 패키지가 다시 설치됩니다.저는 R 프로파일을 조정해야 합니다.어쨌든 사이트(합 대비 사용, Tinn-R에 대한 추가 코드 추가, 이런 것들)는 추가 작업이 아닙니다.모든 패키지를 새로 설치하는 데 시간이 더 걸릴 뿐입니다.

이 마지막 비트는 원래 질문에서 솔루션으로 제공된 것과 동일합니다.먼저 "설치된" 목록을 얻는 것에 대해 걱정할 필요가 없습니다.

CRAN에서 설치하지 않은 패키지가 있는 경우에도 문제 없이 작동하지 않습니다.하지만 이 코드는 쉽게 확장되어 이러한 코드도 포함할 수 있습니다.

윈도우즈를 사용하는 경우 설치 관리자 패키지를 사용할 수 있습니다.

install.packages("installr")
require(installr)
updateR()

가장 좋은 방법은 RGui 시스템입니다.모든 패키지가 새 폴더로 전송되고 이전 패키지는 삭제 또는 저장됩니다(둘 중 하나를 선택할 수 있음).그런 다음 RStudio를 다시 열면 업데이트된 버전을 사용하고 있음을 즉시 인식합니다.나에게 이것은 매력적으로 작용했습니다.

설치 프로그램에 대한 자세한 내용은 여기를 참조하십시오.

두 가지 빠른 제안:

  1. 이 대량 라이브러리 재배치를 지원하는 도구로 구성된 Gabor의 배치 파일을 사용합니다.주의사항:저는 그것들을 사용하지 않았습니다.

  2. 설치된 R 버전의 '파일 트리' 내에 라이브러리를 설치하지 마십시오.Windows에서 R을 C:/opt/R/R-$ 버전에 넣을 수는 있지만 다음 스니펫을 사용하여 모든 라이브러리를 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의 제안에 따라 윈도우에서 이를 수행할 수 있는 몇 가지 R 코드가 있습니다.Windows XP에서 R을 쉽게 업그레이드하는 방법

업데이트(15.04.11):Windows 7에서 R을 업그레이드하는 일반적인 문제를 해결하는 방법을 설명하는 다른 게시물을 작성했습니다.

두 가지 옵션:

  1. 여기에 내 대답 구현
  2. StatET와 함께 Eclipse에서 R을 사용하는 경우 Run Configurations를 열고 Console 탭을 클릭한 다음 R snipet run after startup(시작 후 실행) 상자에 선택한 디렉토리와 함께 다음 행을 추가합니다..libPaths("C:/R/library")

Windows 8(윈도우 8)에서 이상한 이유로 인터넷 연결을 사용하여 패키지를 설치할 수 없습니다.

저는 일반적으로 CRAN의 .zip 파일을 사용하여 설치합니다.

R 3.2.5에서 R 3.3.1로 이동한 후.

패키지를 복사했습니다.

C:\Path\to\packa\R\win-library\3.2C:\Path\to\packa\R\win-library\3.3.

그리고 R 세션을 다시 시작했습니다.완벽하게 작동했습니다.저는 모든 패키지가 잘 작동하는지 확인하지 못했습니다.하지만 제가 확인한 것들은 완벽하게 잘 작동하고 있습니다.이 해킹이 모두에게 효과가 있기를 바랍니다.

건배.

당신이 선견지명이 있다면 수락된 답은 효과가 있을 수 있지만, 저는 이미 이전 버전을 제거했기 때문에 이러한 지시를 따를 수 없었습니다.아래 설명된 단계는 2.1 및 3.1에서 OSX를 업그레이드할 때 작동했습니다.

파일: 3의 디렉터리를 할 수 있습니다.3.1 파일 3.2 파일의 디렉터리는 다음과 같습니다.는 R하고, 합니다. 건너뛰기..그리고...그리고..DS_Store매개 변수:

OLD=$(ls -d /Library/Frameworks/R.framework/Versions/*.* |tail -n 2 | head -n 1)Resources/library/
echo "packages = c(\"`ls $OLD | tail +4| paste -s -d ',' - | sed -E 's|,|\",\"|'g`\")" | tr -d "/" 

(추가)|pbcopyMac 클립보드에 직접 복사하려면 끝까지)

그런 다음 R에서 생성된 변수를 붙여넣을 수 있습니다.새 버전의 R에 정의되면 위의 지침에서 설치된 패키지를 루프할 수 있습니다.

for (p in setdiff(packages, installed.packages()[,"Package"]))
   install.packages(p, dependencies=TRUE, quiet=TRUE, ask=FALSE)

나에게 이 페이지는 좋은 https://www.r-statistics.com/2013/03/updating-r-from-r-on-windows-using-the-installr-package/ 또는 다른 옵션은 새로운 옵션을 설치하는 것이고 마지막으로 당신이 내 PC의 창에 넣는 것입니다.

.libPaths("c("D:/Documents/R/win-library/3.2"), "C:/Program Files/R/R-3.2.3/library", "C:/Program Files/R/R-3.2.0/library", "D:/Documents/R/win-library/2.15").

이 경우 마지막 버전의 모든 경로는 항상 첫 번째 경로를 "D:/Documents/R/win-library/3"로 지정합니다.2"는 고정되었고 다른 하나는 패키지를 복사하거나 이동할 필요가 없기 때문에 다른 하나를 넣었습니다. 제가 제안하기로는 그냥 그것이라고 부릅니다.

linux+bash+debian+apt사용자:

  1. 의 최신 버전을 설치/업그레이드하는 경우R그러면 사용자에게 권한이 있다고 가정할 수 있습니다. (필수적인 것은 아닙니다. 프로세스를 훨씬 단순하게 만들 뿐입니다. 일관성을 위해 아래 스크립트에서 사용합니다.sudo모든 설치에 사용됩니다.)처럼R패키지도 설치됩니다.root따라서 이것들을 배치하는 것이 허용됩니다./usr/local/.

  2. 호출:curl아래는 당신이 이미 관심이 있다고 가정합니다.sid의 석방.R가장 최근의 불안정한 버전(구축/점검 시 필요)R포장) 즉,

    cat /etc/apt/sources.list | grep 'sid' || exit 1

    비록 이것은 최근의 안정적인 릴리스로 쉽게 대체될 수 있지만, 예를 들어. buster.

  3. 일반적으로 권장되는 를 사용하지 않습니다.특히 (다음 스크립트에서와 같이) 패키지를 설치하는 경우에는 필수가 아닙니다. R그 자체(Rscript -e아래).또한 이러한 키는 몇 년마다 깨지거나 변경되는 경향이 있습니다.따라서 파일에 다음 서문을 추가하는 것을 물론 환영합니다.R.sh다음은 다음과 같습니다.

    sudo apt-key adv --keyserver keyserver.ubuntu.com \ --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9

  4. array패키지는 분명 포괄적이지 않지만 제가 개인적으로 유용하다고 생각하는 몇 가지 예를 제공합니다.를 사용하여 새로 설치/업그레이드debian아래와 같이 패키지는 모든 표준 '권장' 패키지의 최신 버전을 제공해야 합니다(예:survival). 수 CRAN은 해당 업데이트를 제공합니다.debian꾸러미따라서, 당신은 이것들 중 일부를 다음에 추가하기를 원할 수 있습니다.array최신 버전의 '권장 사항'이 있는 경우 아래에 표시됩니다.R패키지는 필수입니다.

  5. 아래 프로세스에 설치된 패키지도 필수적인 것은 아닙니다(사용하는 경우).r-base)이 아니라 '번호를 합니다. 는 완하지 추에합가 '기능번제'의 에 중요합니다R꾸러미

어든쨌배...을니다합치에 다음을 .R.sh:

sudo apt update && sudo apt --yes full-upgrade
sudo apt install --yes libappstream4 curl
### ov1 = online version; lv1 = local version (i.e. currently installed)
ov1=$(curl --silent --url https://packages.debian.org/sid/r-base |
    grep 'meta name=\"Keywords\"' |
    grep --only-matching '[0-9].*[0-9]') ; echo $ov1
## command -v = print a description of COMMAND similar to the `type' builtin
## && = if prior command succeeds, then do; || = if prior fails, then do
command -v 'R --version' &&
    lv1=$(R --version |
              grep --only-matching '[0-9\.]*[0-9]' |
              ## || = otherwise
              head -1) ||
        lv1=0
## 'lt' = less than
if dpkg --compare-versions "$lv1" 'lt' "$ov1" 
then ## declare -a = indexed array
     declare -a deb1=('r-base' 'r-base-dev' 'r-recommended')
     for i in "${deb1[@]}"
     do sudo apt install --yes "$i"
     done
fi
### certain Debian packages are required by 'R' so best have these first
sudo apt install --yes ccache libcairo2-dev libxml2-dev libcurl4-openssl-dev \
     libssl-dev liblapack-dev libssl-dev
declare -a pkg1=('data.table' 'ggplot2' 'knitr' 'devtools' 'roxygen2')
## installing as 'root' so these are installed in
Rscript -e ".libPaths()[1]"
for i in "${pkg1[@]}"
do sudo Rscript -e "install.packages('$i', dependencies=TRUE)"
done
### other useful additions
sudo apt install --yes libblas-dev libboost-dev libarmadillo-dev \
     jags pandoc pandoc-citeproc 
sudo apt update && sudo apt full-upgrade

들어 가정하고 합니다.source R.sh.

(「 」(「 」) 여부debian또는R셸에서 루프로 하나씩 이동하는 것은 다소 비효율적이지만 오류를 쉽게 추적할 수 있습니다. IMHO).의 수에 따라 시간이 걸릴 수 있습니다.R패키지, 그러니까 하룻밤 사이에 실행하는 것이 가장 단순할 수도 있습니다.

리눅스에서, 이제 그것은 매우 간단합니다.그냥 만들기:

install.packages("ropenblas")
ropenblas::rcompiler()

언급URL : https://stackoverflow.com/questions/1401904/painless-way-to-install-a-new-version-of-r

반응형