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. Strange for me, however, is that 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
}
But I am clueless as to the solution.
using the latest dev version of ggrepel
, the error disappeared.
install with devtools::install_github("slowkow/ggrepel@0.6.2")
package versions:
ggplot2 * 2.1.0.9001 2016-10-07 Github (hadley/ggplot2@979004a)
ggrepel * 0.6.2 2016-10-07 Github (slowkow/ggrepel@254bd61)
scales 0.4.0.9003 2016-10-07 Github (hadley/scales@d58d83a)