2017-11-26 8 views
0

공동 작업자와 R 코드를 공유하는 데 어려움을 겪고 있으며이 문제를 해결하는 방법을 알고 싶습니다. 내 코드는 제대로 실행되지만 내 공동 작업자에게는 실행되지 않으며 그 반대도 마찬가지입니다. R/Rstudio와 패키지를 최신으로 유지합니다.비 호환성 공유 R 코드

내 Mac에서 Rstudio를 사용하는 동안 공동 작업자가 PC에서 R을 사용합니다. R/Rstudio와 Mac과 PC간에 R 코드를 공유하는 데있어 알려진 비 호환성이 있습니까?

내가 가지고있는 가설 중 하나는 이전 버전의 패키지 때문일 수 있다는 것입니다. 공동 작업자가 R을 최신 상태로 유지한다는 것은 알고 있지만 패키지를 관리하는 방법에 대해서는 확신 할 수 없습니다.

예 : 나는 데이터 조작을 위해 tidyverse를 사용하는데, 특히 이것이 그들에게 문제가되는 것 같습니다.

코드를 성공적으로 공유하는 가장 좋은 방법은 무엇입니까? 누군가 최근에 "라이브러리"를 사용하여 대신 "요구"를 사용하여 문제를 해결할 수있는 패키지를로드하는 것이 좋습니다.

+2

R은 프로그래밍 언어입니다. 공동 작업자가 자신의 PC에서 사용하는 R IDE는 무엇입니까? 둘 다 R을 최신으로 유지하면 코드가 열리고 두 사람 모두에게 잘 돌아갑니다. 그렇지 않으면 당신 중 한 명이 잘못 착각 한 것입니다. – ZeroRequiem

+0

OS X 및 Windows에서 R의 동작에 약간의 차이가 있습니다 (예 : Windows의 경우 download.files()에서'method = "wininet"사용 필요, OS X에서는'method = "curl" 그러나 일반적으로 두 운영 체제에서 같은 릴리스 레벨에 설치된 특정 패키지는 동일한 방식으로 작동하고 동일한 결과를 생성합니다. OS X, Windows 및 Ubuntu Linux에 R 설치가 있고 y는 현재 릴리스 레벨의 패키지가 각 운영 체제에 적용될 때 동일한 결과를 생성합니다. –

+0

가장 좋은 방법은 docker를 사용하여 두 이미지가 동일한 이미지 빌드에서 실행되는 것입니다. 그러나 "라이브러리"대신 "요구"를 사용하도록 제안한 사람은 무시하십시오. 거의 언제나 할 일이 잘못되었습니다 : https://yihui.name/ko/2014/07/library-vs-require/ – Spacedman

답변

2

동일한 릴리스 레벨에서 두 시스템이 동일한 패키지를 갖도록하려면 Chris Eberwein의 기사 How to Upgrade R Without Losing Your Packages에 설명 된 절차를 데이터 과학 동풍에 게시 할 수 있습니다. 저는 Bioconductor가 아닌 단계를 다시 게시하여 사람들이 여기에있는 단계를 볼 수 있도록했습니다.

먼저 현재 설치된 패키지 목록을 .rda 파일에 저장하십시오.

tmp <- installed.packages() 
    installedpkgs <- as.vector(tmp[is.na(tmp[,"Priority"]), 1]) 
    save(installedpkgs, file="installed_old.rda") 

둘째,

셋째 R.

의 최신 버전을 설치 이전 패키지 업데이트를 다시로드합니다.

tmp <- installed.packages() 
installedpkgs.new <- as.vector(tmp[is.na(tmp[,"Priority"]), 1]) 
missing <- setdiff(installedpkgs, installedpkgs.new) 
install.packages(missing) 
update.packages() 

Bioconductor 패키지를 다시 설치하려면 위에 링크 된 URL의 기사를 읽으십시오.

모든 패키지의 동일한 버전이 여러 대의 컴퓨터에 설치되어 있는지 확인하는 한 가지 방법은 sessionInfo() 기능을 사용하고 각 컴퓨터의 출력을 비교하는 것입니다.

> library(tidyverse) 
── Attaching packages ────────────────────────────────────────────── tidyverse 1.2.1 ── 
✔ ggplot2 2.2.1  ✔ purrr 0.2.4 
✔ tibble 1.3.4  ✔ dplyr 0.7.4 
✔ tidyr 0.7.2  ✔ stringr 1.2.0 
✔ readr 1.1.1  ✔ forcats 0.2.0 
── Conflicts ───────────────────────────────────────────────── tidyverse_conflicts() ── 
✖ dplyr::filter() masks stats::filter() 
✖ dplyr::lag() masks stats::lag() 
> sessionInfo() 
R version 3.4.2 (2017-09-28) 
Platform: x86_64-apple-darwin15.6.0 (64-bit) 
Running under: macOS High Sierra 10.13.1 

Matrix products: default 
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib 
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib 

locale: 
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] forcats_0.2.0 stringr_1.2.0 dplyr_0.7.4  purrr_0.2.4  readr_1.1.1  
[6] tidyr_0.7.2  tibble_1.3.4 ggplot2_2.2.1 tidyverse_1.2.1 

loaded via a namespace (and not attached): 
[1] Rcpp_0.12.14   cellranger_1.1.0  compiler_3.4.2  
[4] plyr_1.8.4   bindr_0.1    tools_3.4.2   
[7] lubridate_1.7.1  jsonlite_1.5   nlme_3.1-131   
[10] gtable_0.2.0   lattice_0.20-35  pkgconfig_2.0.1  
[13] rlang_0.1.4   psych_1.7.8   cli_1.0.0    
[16] rstudioapi_0.7.0-9000 parallel_3.4.2  haven_1.1.0   
[19] bindrcpp_0.2   xml2_1.1.1   httr_1.3.1   
[22] hms_0.4.0    grid_3.4.2   glue_1.2.0   
[25] R6_2.2.2    readxl_1.0.0   foreign_0.8-69  
[28] modelr_0.1.1   reshape2_1.4.2  magrittr_1.5   
[31] scales_0.5.0   rvest_0.3.2   assertthat_0.2.0  
[34] mnormt_1.5-5   colorspace_1.3-2  stringi_1.1.6   
[37] lazyeval_0.2.1  munsell_0.4.3   broom_0.4.3   
[40] crayon_1.3.4   
>