Skip to content

Error in zero_range() when running ggrepel with Github version of ggplot2 #1768

@aliarsalankazmi

Description

@aliarsalankazmi

I recently upgraded my R version to 3.2.3, and updated my packages. I then installed the Github version of ggplot2 and CRAN version of ggrepel.

The versions for the packages in use are:

ggplot2: 2.1.0.9000  
ggrepel: 0.5  
scales: 0.4.0

But after loading these packages, I cannot even run the example script provided for ggrepel:

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

The function zero_range() is from the scales package, but if I install ggplot2 from CRAN (version 2.1.0), ggrepel starts working as expected.
Updating or re-installing scales or ggrepel does not have any effect.

I remember that in my old version of R 3.1.3, I had installed ggplot2 from Github (to use subtitles and caption), and it worked fine there.

My session info is:

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

From my debugging, the error occurs at this function:

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)

And within it at:

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
}

Unsure why only after I updated R did I start facing this problem?
(This question was cross-posted from Stackoverflow, after confirmation that a fellow R user too faced this problem).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions