我最近将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
包。但是,对我来说很奇怪的是,如果我从CRAN ggplot2
安装(version 2.1.0)
,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
}
但我对解决方案毫无头绪。
答案 0 :(得分:4)
使用最新的开发版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)