renv와 docker로 R 분석 환경 구축

4542 단어 R도커renv분석

2021/10/17 추가



여러가지 재검토한 적이 있어, 새로운 기사 를 썼다.

개요



R을 사용할 필요에 육박해, 나름대로 환경을 준비했을 때의 메모. 이하의 조건을 만족하는 환경을 목표로 한다.
1. ローカルの環境を汚したくない
2. Rのバージョンを明確に指定可能、なおかつ適宜変更可能
3. 利用するパッケージをプロジェクトごとに管理可能(pythonにおけるvenvのイメージ)
4. 複数のプロジェクトで同じパッケージを利用する際、一度のインストールで済む
1,2 는 사용하고 싶은 버젼의 R가 인스톨 된 docker 이미지를 준비하면 해결. 3 renv라는 R 패키지를 설치하는 것이 편리합니다. 4docker run 때 적절한 옵션을 지정한다.

환경



내 환경은 다음과 같습니다. docker를 이용하기 때문에 다른 환경에서도 대체로 문제 없을 것.
  • windows 10, version 2004
  • 우분투 18.04 LTS (WSL2)
  • docker 19.03.8 (Docker Desktop이 아님)

  • docker 이미지 준비



    이하, 필요한 파일의 내용에 대해 해설한다 1 우선은 Dockerfile.

    Dockerfile
    FROM r-base:4.0.0
    COPY ./entrypoint.sh /
    COPY ./init.R /
    RUN apt update && \
        apt install -y  mecab mecab-ipadic-utf8 fonts-ipafont libmecab-dev && \
        apt install -y  libcurl4-openssl-dev libssl-dev libxml2-dev && \
        Rscript /init.R && \
        chmod +x /entrypoint.sh
    ENTRYPOINT ["/entrypoint.sh"]
    

    첫 번째 줄의 r-base:4.0.0는 R의 공식 docker 이미지. 다른 버전이 필요하다면 4.0.0 의 부분을 바꾼다. 사용 예정인 R의 패키지가 의존하는 기능은 apt install 로 인스톨 해 둔다.
    Rscript 에서 실행하는 init.R의 내용은 다음과 같이 renv를 설치할 뿐입니다.

    init.R
    install.packages("renv")
    
    ENTRYPOINT 로 지정하고 있는 entrypoint.sh의 내용은 이하와 같다./sync라는 디렉토리로 이동하여 R을 시작합니다.
    #!/bin/bash
    cd /sync
    R
    

    나머지는 로컬로 빌드해도 좋지만, 나는 Github에 push하면 DockerHub에서 자동으로 빌드되도록 설정하고 있기 때문에 그것을 이용한다. 개인 리보지토리가 아니기 때문에 누구나 docker pull2 .

    docker 이미지 사용



    우선은 프로젝트의 폴더로 이동. docker를 사용할 수 있는 환경이라면, 다음의 커멘드로 R이 기동한다. 말미의 태그로 R의 버젼을 바꿀 수 있도록 그중 준비하고 싶다(아직 latest 밖에 없다).
    docker run -it --rm -v $(pwd):/sync -v $HOME/.renv:/root/.local/share/renv dr666m1/myr:latest
    
    -v 두 개가 있지만 첫 번째는 현재 디렉토리를 docker 컨테이너와 공유합니다. 둘째는 설치한 R의 패키지의 저장처를, 로컬의 $HOME/.renv 로 지정하고 있다. 이것을 지정해 두는 것으로, 다른 프로젝트에서 같은 패키지를 이용할 때에 쓸데없는 인스톨이 달리지 않는다.

    renv 사용법에 대한 자세한 설명은 하지 않지만, 첫회는 renv::init() 로 프로젝트의 초기화를 하는 것.

    내 사용법



    에디터는 neovim을 사용하는 경우가 많기 때문에, neoterm을 기동해 이하 3 와 같이 이용하고 있다. 오른쪽 절반에서 코드를 쓰고 왼쪽 절반에서 R을 시작하여 코드를 실행하고 있습니다. 그래프는 png등으로 보존해 보러 가게 되기 때문에 약간 번거롭지만, 지금까지 좋아하는 에디터를 사용할 수 있는 메리트가 크다.




    파일은 모두 Github에도 둔다.

    우선 태그는 latest. R의 버전마다 태그를 바꾸면 나중에 편리할 것이라고는 생각하고 있다.

    shell이 ​​fish이기 때문에 docker run 옵션의 쓰는 방법이, 위에 기재한 것과 약간 다르다.

    좋은 웹페이지 즐겨찾기