Ошибка ".onLoad failed в loadNamespace() для 'tcltk'"
У меня есть общий вопрос о том, как эффективно загружать какой-либо внешний пакет в R. Я обнаружил, что многие источники, детализирующие эту информацию, просто недостаточны, но я не буду упоминать эти соответствующие URL-адреса. Я успешно загрузил внешние пакеты в R раньше, но у меня возникают трудности с загрузкой пакета fgui
.
В моем конкретном случае я не могу загрузить библиотеку fgui
в R Studio. Сначала я загружаю непосредственно из CRAN с помощью команды:
install.packages("fgui", lib="~/Documents/R_dir")
Это отлично работает для меня. Мой рабочий каталог установлен в ~/Documents/R_dir
Следующая команда, которую я использую:
library("fgui", lib.loc="~/Documents/R_dir")
Ошибка, которую я получаю:
Error : .onLoad failed in loadNamespace() for 'tcltk', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/Library/Frameworks/R.framework/Versions/3.1/Resources/library/tcltk/libs/tcltk.so':
dlopen(/Library/Frameworks/R.framework/Versions/3.1/Resources/library/tcltk/libs/tcltk.so, 10): Library not loaded: /opt/X11/lib/libX11.6.dylib
Referenced from: /Library/Frameworks/R.framework/Versions/3.1/Resources/library/tcltk/libs/tcltk.so
Reason: image not found
Error: package or namespace load failed for ‘fgui’
Я просмотрел нить "Ошибка при загрузке библиотеки (ggplot2) в R", но она не ответила на мой вопрос.
Пожалуйста, помогите мне с любыми предложениями, чтобы пакет fgui
работал должным образом в R Studio и не стеснялся обратиться к более общей проблеме эффективной загрузки внешних пакетов в R.
Ответы
Ответ 1
tcltk
не является типичным пакетом. Он, вероятно, уже установлен в вашей системе и не может быть установлен с помощью обычной процедуры install.packages
, потому что она не находится на CRAN (как и базовые пакеты, которые поставляются с R, например stats
и т.д.). Кроме того, tcltk2
не совпадает с tcltk
; это пакет, который расширяется (и зависит от) функциональность tcltk
.
Итак, начните с этого:
> capabilities("tcltk")
tcltk
TRUE
Если это вернется FALSE
, это означает, что ваш R не был создан с поддержкой tcltk. Вы не говорите, какую ОС вы используете, поэтому вам немного сложно помочь.
Тем не менее, если вы находитесь в Linux, вам нужно перестроить R с поддержкой tcltk. Это должно быть относительно просто. В принципе, убедитесь, что Tcl и tk доступны в вашей системе в стандартном расположении (что-то вроде sudo apt-get install tcl8.5-dev tk8.5-dev
), а затем перестройте R на обычные процедуры.
Если вы находитесь на Mac OS, вы сталкиваетесь с той же ошибкой, что Джон Фокс описывает здесь в отношении Rcmdr. Короче говоря, это, вероятно, одна из двух вещей:
-
Проблема с правами на файл, связанная с каталогом, в котором установлен Tcl. Чтобы процитировать Fox: "Вы можете проверить источник этой проблемы, выпустив следующую команду в командной строке R:
system("ls -ld /usr/local /usr/local/lib /usr/local/lib/libtcl*")
# ls: /usr/local/lib: Permission denied
# ls: /usr/local/lib/libtcl*: Permission denied
# drwx------ 8 root wheel 272 Sep 24 10:21 /usr/local
Если вывод системной команды выглядит так, как указано выше, вы должны перейти в терминал и сделать следующее: sudo chmod -R a+rX /usr/local
и ввести свой пароль для изменения разрешений каталога.
- У вас устаревшая версия X-Windows. Попробуйте запустить Mac OS Software Update.
Он также может быть разрешен путем создания символической ссылки как описано в этом ответе.
Это никогда не должно появляться на Windows, если вы не создали R из источника без поддержки tcl/tk.
Ответ 2
- удалить файл X11 на месте:/opt
- удалить X11 в приложении unitiltiy
- снова установите X11
Проблема решена...
Ответ 3
официальные инструкции по установке для R говорят:
Примечание. Использование X11 (включая tcltk) требует XQuartz, чтобы быть установленный, так как он больше не является частью OS X. Всегда переустанавливайте XQuartz при обновлении ОС X до новой основной версии.
Итак: просто (повторно) установите XQuartz, если вы хотите использовать пакет tcltk
в R.
Ответ 4
Для пользователей Mac OS:
Недавно я столкнулся с этой проблемой и обнаружил, что R-3.1.2 имеет ошибку, предполагающую, что otool установлен, когда это не так.
R-3.0.0 (и позже) поставляется с Tck/Tk 8.6.0, поэтому вам не нужно устанавливать его.
Просто обновление до более поздней версии R (3.4.2) исправило проблему для меня.