2016-09-21 6 views
2

최근에 R 버전을 3.2.3으로 업그레이드하고 패키지를 업데이트했습니다. 그런 다음 버전의 ggplot2과 CRAN 버전 ggrepel을 설치했습니다. 사용하고있는 패키지ggplot2의 Github 버전을 실행할 때 zero_range() 오류가 발생했습니다.

버전은 다음과 같습니다

ggplot2: 2.1.0.9000 
ggrepel: 0.5 
scales: 0.4.0 

그러나 이러한 패키지를로드 한 후

, 나는 심지어 ggrepel에 제공되는 예제 스크립트를 실행할 수 없습니다 : 기능 zero_range()은에서입니다

library(ggrepel) 
p <- ggplot(mtcars, aes(wt, mpg, label = rownames(mtcars))) 
# Avoid overlaps by repelling text labels 
p + geom_text_repel() 

Error in zero_range(from) : x must be length 1 or 2 

scales 패키지. 그러나 이상하게도 CRAN (version 2.1.0)에서 ggplot2을 설치하면 ggrepel이 예상대로 작동하기 시작합니다.
scales 또는 ggrepel을 업데이트하거나 다시 설치해도 아무런 영향이 없습니다.

이전 버전의 R 3.1.3에서 Github (자막 및 캡션 사용)에서 ggplot2을 설치 했으므로 잘 작동했음을 기억합니다.

내 디버깅에서
R version 3.2.3 (2015-12-10) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 
Running under: Windows 7 x64 (build 7601) Service Pack 1 

locale: 
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252 
[4] LC_NUMERIC=C       LC_TIME=English_United States.1252  

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

other attached packages: 
[1] ggrepel_0.5  ggplot2_2.1.0.9000 

loaded via a namespace (and not attached): 
[1] labeling_0.3  colorspace_1.2-6 scales_0.4.0  assertthat_0.1 lazyeval_0.2.0 plyr_1.8.4  
[7] tools_3.2.3  gtable_0.2.0  tibble_1.2  Rcpp_0.12.7  grid_3.2.3  munsell_0.4.3 

이 오류가이 기능에서 발생합니다 :

ggproto("LayerInstance", Layer, geom = geom, geom_params = geom_params, 
     stat = stat, stat_params = stat_params, data = data, 
     mapping = mapping, aes_params = aes_params, subset = subset, 
     position = position, inherit.aes = inherit.aes, show.legend = show.legend) 

그리고에서 그 안에 :

내 세션 정보는

function (`_class` = NULL, `_inherit` = NULL, ...) 
{ 
    e <- new.env(parent = emptyenv()) 
    members <- list(...) 
    if (length(members) != sum(nzchar(names(members)))) { 
     stop("All members of a ggproto object must be named.") 
    } 
    if (length(members) > 0) { 
     list2env(members, envir = e) 
    } 
    if (!is.null(`_inherit`)) { 
     if (!is.ggproto(`_inherit`)) { 
      stop("`_inherit` must be a ggproto object.") 
     } 
     e$super <- `_inherit` 
     class(e) <- c(`_class`, class(`_inherit`)) ###### Here layeth the error, as I think 
    } 
    else { 
     class(e) <- c(`_class`, "ggproto") 
    } 
    e 
} 

그러나 나는 우둔입니다 해결책에 관해서.

+3

나는 당신의 오류를 확인할 수 있습니다 당신은'ggplot2'의'CRAN' 버전을 사용하고 여기에 오류를보고한다 : HTTPS를 : // github에. co.kr/hadley/ggplot2/issues –

+0

@J_F 확인해 주셔서 감사합니다! –

답변

4

ggrepel의 최신 개발 버전을 사용하면 오류가 사라집니다.

devtools::install_github("slowkow/[email protected]")

패키지 버전 설치 :

ggplot2 * 2.1.0.9001 2016-10-07 Github (hadley/[email protected]) 
ggrepel * 0.6.2  2016-10-07 Github (slowkow/[email protected]) 
scales  0.4.0.9003 2016-10-07 Github (hadley/[email protected]) 
+3

실제로 ggplot2가 새로 설치 될 때마다 ggrepel을 다시 설치하는 것이 해결책입니다. ggproto 때문에. slowkow 및 aphalo https://github.com/slowkow/ggrepel/issues/55#issuecomment-255364286에 대한 자세한 내용을 참조하십시오. – aurelien