错误“.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
等)。 另外, tcltk2
与tcltk
不一样; 这是一个扩展(并依赖于) tcltk
function的tcltk
。
所以,从这开始:
> capabilities("tcltk") tcltk TRUE
如果返回FALSE
这意味着你的R不是用tcltk支持构build的。 你没有说你正在使用的操作系统,所以帮助你有点困难。
也就是说,如果你在Linux上 ,你需要用tcltk支持来重buildR。 这应该是相对简单的。 基本上,确保Tcl和tk在你的系统上的标准位置(如sudo apt-get install tcl8.5-dev tk8.5-dev
) sudo apt-get install tcl8.5-dev tk8.5-dev
,然后按照常规程序重buildR。
如果你在Mac OS上 ,你遇到了John Fox在这里描述的与Rcmdr有关的错误 。 总之,这可能是两件事之一:
-
与安装有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您的密码以更改目录权限。
- 你有一个过时的X-Windows版本。 尝试运行Mac OS软件更新。
这也可以通过创build一个象这个答案中描述的符号链接来解决 。
这应该永远不会出现在Windows上 ,除非你从没有tcl / tk支持的源代码构buildR。
- 删除位置上的X11文件:/ opt
- 在申请单元上删除X11
- 重新安装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)的更新版本,为我解决了这个问题。