我最近将我的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
没有任何效果。
我记得在我的旧版本 R3.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
}
但我对解决方案一无所知。