Ошибка ".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 и ввести свой пароль для изменения разрешений каталога.

  1. У вас устаревшая версия 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) исправило проблему для меня.