错误“.onLoad在loadNamespace()for'tcltk'失败

我有一个关于如何有效地将任何types的外部包加载到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时出错 ”,但它没有回答我的问题。

请帮我提出一些build议,让软件包能够在R Studio中正常工作,并且可以自由地解决将外部软件包有效加载到R的更普遍的问题。

tcltk不是一个典型的包。 它可能已经安装在你的系统上,并且不能使用通常的install.packages程序进行安装,因为它不在CRAN上(就像R随附的基本软件包一样,如stats等)。 另外, tcltk2tcltk不一样; 这是一个扩展(并依赖于) tcltkfunction的tcltk

所以,从这开始:

 > capabilities("tcltk") tcltk TRUE 

如果返回FALSE这意味着你的R不是用tcltk支持构build的。 你没有说你正在使用的操作系统,所以帮助你有点困难。

也就是说,如果你在Linux上 ,你需要用tcltk支持来重buildR。 这应该是相对简单的。 基本上,确保Tcl和tk在你的系统上的标准位置(如sudo apt-get install tcl8.5-dev tk8.5-devsudo apt-get install tcl8.5-dev tk8.5-dev ,然后按照常规程序重buildR。

如果你在Mac OS上 ,你遇到了John Fox在这里描述的与Rcmdr有关的错误 。 总之,这可能是两件事之一:

  1. 与安装有Tcl的目录相关的文件权限问题。 引用Fox的话:“您可以通过在R命令提示符处发出以下命令来validation此问题的来源:

     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 

如果系统命令的输出如上所示,则应进入terminal并执行以下操作: sudo chmod -R a+rX /usr/local并input您的密码以更改目录权限。

  1. 你有一个过时的X-Windows版本。 尝试运行Mac OS软件更新。

这也可以通过创build一个象这个答案中描述的符号链接来解决 。

这应该永远不会出现在Windows上 ,除非你从没有tcl / tk支持的源代码构buildR。

  1. 删除位置上的X11文件:/ opt
  2. 在申请单元上删除X11
  3. 重新安装X11

问题解决了…

R的官方安装说明说:

注意:使用X11(包括tcltk)需要安装XQuartz ,因为它不再是OS X的一部分。在将OS X升级到新的主要版本时,总是重新安装XQuartz。

所以:只要(重新)安装XQuartz,如果你想在R中使用tcltk包。

对于Mac OS用户:

我最近在这个问题上苦苦挣扎,发现R-3.1.2有一个错误,它假定在没有安装otool的时候安装。

R-3.0.0(及更高版本)附带Tck / Tk 8.6.0,所以你不需要安装它。

简单地升级到R(3.4.2)的更新版本,为我解决了这个问题。