调整mapdeck描边或填充色导致R崩溃问题求助
mapdeck修改颜色导致R崩溃的问题排查思路
问题描述
- Windows 11环境下使用mapdeck包,只要修改多边形、线或点的描边/填充颜色,R就会崩溃并需终止会话;不修改颜色时数据可正常渲染。
- 崩溃前会弹出如下警告:
Registered S3 method overwritten by 'jsonify':
method from
print.json jsonlite
- 已尝试更换R版本、重装R、更新相关包,问题仍未解决。
复现代码
library(mapdeck) set_token(TOKEN) mapdeck() %>% add_path( data = roads , stroke_colour = "RIGHT_LOC" # 注释掉此行即可正常运行 )
会话信息
sessionInfo() R version 4.2.3 (2023-03-15 ucrt) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows 10 x64 (build 22621) Matrix products: default locale: [1] LC_COLLATE=English_United States.utf8 [2] LC_CTYPE=English_United States.utf8 [3] LC_MONETARY=English_United States.utf8 [4] LC_NUMERIC=C [5] LC_TIME=English_United States.utf8 attached base packages: [1] stats graphics grDevices utils datasets [6] methods base other attached packages: [1] mapdeck_0.3.4 loaded via a namespace (and not attached): [1] tidyselect_1.2.0 remotes_2.4.2 [3] purrr_1.0.1 sf_1.0-12 [5] jsonify_1.2.2 vctrs_0.6.2 [7] generics_0.1.3 miniUI_0.1.1.1 [9] htmltools_0.5.5 usethis_2.1.6 [11] yaml_2.3.7 utf8_1.2.3 [13] rlang_1.1.1 pkgbuild_1.4.0 [15] e1071_1.7-13 pillar_1.9.0 [17] later_1.3.1 urlchecker_1.0.1 [19] glue_1.6.2 DBI_1.1.3 [21] sessioninfo_1.2.2 lifecycle_1.0.3 [23] stringr_1.5.0 devtools_2.4.5 [25] htmlwidgets_1.6.2 memoise_2.0.1 [27] callr_3.7.3 fastmap_1.1.1 [29] httpuv_1.6.11 ps_1.7.5 [31] class_7.3-21 fansi_1.0.4 [33] Rcpp_1.0.10 KernSmooth_2.23-20 [35] xtable_1.8-4 promises_1.2.0.1 [37] classInt_0.4-9 cachem_1.0.8 [39] pkgload_1.3.2 jsonlite_1.8.4 [41] mime_0.12 fs_1.6.2 [43] digest_0.6.31 stringi_1.7.12 [45] processx_3.8.1 dplyr_1.1.2 [47] shiny_1.7.4 grid_4.2.3 [49] cli_3.6.1 tools_4.2.3 [51] magrittr_2.0.3 proxy_0.4-27 [53] tibble_3.2.1 profvis_0.3.8 [55] crayon_1.5.2 sfheaders_0.4.2 [57] pkgconfig_2.0.3 ellipsis_0.3.2 [59] prettyunits_1.1.1 rstudioapi_0.14 [61] R6_2.5.1 units_0.8-2 [63] compiler_4.2.3 sapply (c ("geojsonsf", "spatialwidget", "googlePolylines", "mapdeck"), packageVersion) $geojsonsf [1] 2 0 3 $spatialwidget [1] 0 2 3 $googlePolylines [1] 0 8 3 $mapdeck [1] 0 3 4
解决思路
- 检查颜色列数据类型:mapdeck的颜色参数要求列是字符型(颜色名称/十六进制)或数值型,若
RIGHT_LOC是因子类型,先转成字符型:roads$RIGHT_LOC <- as.character(roads$RIGHT_LOC) - 明确指定颜色映射:手动定义颜色映射规则,避免自动解析出错,比如:
stroke_colour = mapdeck::scale_colour(variable = "RIGHT_LOC", palette = "viridis") - 测试简化数据集:取
roads前10行小数据运行,排除大数据量引发的内存或解析问题 - 降级jsonify包:警告提示jsonify覆盖了jsonlite的方法,尝试安装旧版本jsonify(如1.2.1),避免方法冲突
- 验证sf对象有效性:若
roads是sf对象,运行sf::st_is_valid(roads)检查几何数据是否存在错误,无效几何可能在颜色映射时触发崩溃 - 脱离RStudio运行:打开纯R终端执行代码,排除RStudio交互或渲染层面的问题
内容的提问来源于stack exchange,提问作者JNN
相关产品推荐
相关产品推荐

