У меня установлена ggplot2
3.4.0 на Ubuntu 22.04, но по некоторым причинам я хотел бы использовать более старую версию ggplot2
3.3.6.
library(ggplot2, lib.loc = "~/R/ggplot336/")
Я работал нормально, когда я начал с чистого файла сценария. Однако, когда я использую существующий файл сценария, например:
library(ggplot2, lib.loc = "~/R/ggplot336/")
ggimage::geom_image()
Я получил следующее сообщение об ошибке:
Ошибка в значении [3L] : Пакет ‘ggplot2’ версии 3.4.0 не может быть выгружен: Ошибка в unloadNamespace(package): пространство имен «ggplot2» импортировано «ggfun», «ggplotify», «ggimage», поэтому его нельзя выгрузить
sessionInfo()
library(ggplot2, lib.loc = "~/R/ggplot336/")
ggimage::geom_image()
Когда я запускаю первую строку, sessionInfo()
прежде чем делать что-либо еще. Мы можем видеть ggplot2_3.4.0
там. Может ли это быть функцией Rstudio или проблемой?
R version 4.2.2 Patched (2022-11-10 r83330)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 22.04.1 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.10.0
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0
locale:
[1] LC_CTYPE=en_AU.UTF-8 LC_NUMERIC=C LC_TIME=en_AU.UTF-8
[4] LC_COLLATE=en_AU.UTF-8 LC_MONETARY=en_AU.UTF-8 LC_MESSAGES=en_AU.UTF-8
[7] LC_PAPER=en_AU.UTF-8 LC_NAME=C LC_ADDRESS=C
[10] LC_TELEPHONE=C LC_MEASUREMENT=en_AU.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] Rcpp_1.0.9 highr_0.9 pillar_1.8.1 compiler_4.2.2
[5] R.utils_2.12.2 R.methodsS3_1.8.2 yulab.utils_0.0.5 tools_4.2.2
[9] digest_0.6.30 evaluate_0.18 jsonlite_1.8.3 lifecycle_1.0.3
[13] tibble_3.1.8 gtable_0.3.1 ggimage_0.3.1 R.cache_0.16.0
[17] pkgconfig_2.0.3 rlang_1.0.6 reprex_2.0.2 DBI_1.1.3
[21] cli_3.4.1 ggplotify_0.1.0 rstudioapi_0.14 magick_2.7.3
[25] yaml_2.3.6 xfun_0.35 fastmap_1.1.0 knitr_1.41
[29] withr_2.5.0 dplyr_1.0.10 styler_1.8.1 generics_0.1.3
[33] vctrs_0.5.1 fs_1.5.2 gridGraphics_0.5-1 grid_4.2.2
[37] tidyselect_1.2.0 glue_1.6.2 R6_2.5.1 processx_3.8.0
[41] fansi_1.0.3 rmarkdown_2.18 clipr_0.8.0 callr_3.7.3
[45] ggplot2_3.4.0 purrr_0.3.5 magrittr_2.0.3 ps_1.7.2
[49] htmltools_0.5.3 scales_1.2.1 assertthat_0.2.1 colorspace_2.0-3
[53] utf8_1.2.2 munsell_0.5.0 ggfun_0.0.9 R.oo_1.25.0
Попробовал, получилось Error in detach(ggplot2) : invalid 'name' argument
Спасибо, но пока я открываю существующий файл сценария, проблема остается.
Есть ли у вас какие-либо library()
вызовы перед этим в существующем скрипте? У вас есть какой-нибудь пакет, который автоматически загружается при запуске? У вас может быть загружена только одна версия пакета за раз, поэтому вполне вероятно, что какой-то другой пакет, вероятно, автоматически загружает более новую версию ggplot, прежде чем вы сможете загрузить старую.
Новое начало. Я отредактировал свой вопрос и добавил дополнительную информацию. Спасибо
Похоже, что R studio загружает все предыдущие библиотеки из предыдущего сеанса. Возможно, что-то осталось в .RData или .Rhistory. Новый запуск R должен иметь очень мало загруженных библиотек.
Вот мое новое начало:
sessionInfo()
R version 4.2.2 (2022-10-31)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Monterey 12.6.1
Matrix products: default
LAPACK: /Library/Frameworks/R.framework/Versions/4.2/Resources/lib/libRlapack.dylib
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_4.2.2 tools_4.2.2
В настройках Rstudio вы должны увидеть этот экран:
Я бы попробовал снять все флажки, а затем выйти и перезапустить Rstudio, чтобы посмотреть, решит ли это проблему.
Да, но когда я открываю файл сценария R, содержащий код типа ggimage::geom_image()
, без специальной загрузки каких-либо пакетов. Может ли кто-нибудь попробовать это на своей машине: добавить эту строку в файл сценария, сохранить ее, заново запустить rstudio, открыть файл сценария, затем sessionInfo()
и посмотреть, что произойдет? Спасибо
После некоторых экспериментов я как бы разобрался с проблемой. Поскольку на это ушло так много времени, я подумал, что это может быть полезно для других.
Проблема заключается в ::
(двойное двоеточие) с пакетами, использующими ggplot2
, например ggimage
в моем примере. Похоже, что RStudio автоматически загружает некоторые зависимые пакеты при открытии файла сценария. Один из способов решить эту проблему для моей работы сейчас — удалить ::
, но вместо этого использовать library()
, а затем функцию (geom_image
).
Это решило мою проблему, но я до сих пор не понимаю, почему RStudio ведет себя таким образом.
Если ::
(двойное двоеточие) необходимо, прокомментируйте строки, содержащие ::
, затем после загрузки более старой версии ggplot2 раскомментируйте эти строки. Немного неудобно, но это работает для меня.
Может, попробовать
detach(ggplot2)
перед запуском скрипта?