Ошибка в zero_range() при запуске ggrepel с GitHub-версией ggplot2
Я недавно обновил свой R
версия для 3.2.3
и обновил мои пакеты. Затем я установил Github
версия ggplot2
и CRAN версия ggrepel
,
Версии для используемых пакетов:
ggplot2: 2.1.0.9000
ggrepel: 0.5
scales: 0.4.0
Но после загрузки этих пакетов я даже не могу запустить пример сценария, предоставленный для 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
Функция zero_range()
от scales
пакет. Странно для меня, однако, что если я установлю ggplot2
от CRAN (version 2.1.0)
, ggrepel
начинает работать как положено.
Обновление или переустановка scales
или же ggrepel
не имеет никакого эффекта.
Я помню, что в моей старой версии R 3.1.3
Я установил ggplot2
от Github (чтобы использовать субтитры и подписи), и там все работало нормально.
Информация о моей сессии:
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
}
Но я не знаю, как решить.
1 ответ
Используя последнюю версию Dev ggrepel
ошибка исчезла.
установить с devtools::install_github("slowkow/ggrepel@0.6.2")
версии пакета:
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)