错误".onLoad在loadNamespace()中失败'tcltk'"

war*_*hip 11 tk-toolkit r cran

我有一个关于如何有效地将任何类型的外部包加载到R中的一般性问题.我发现许多详细说明这些信息的来源是不够的,但我将不再提及那些相应的URL.我之前已成功将外部软件包加载到R中,但是我在加载fgui软件包时遇到了困难.

在我的具体情况下,我无法将库加载fgui到R Studio中.首先,我使用以下命令直接从CRAN下载:

install.packages("fgui", lib="~/Documents/R_dir")
Run Code Online (Sandbox Code Playgroud)

这对我来说很好.我的工作目录设置为〜/ Documents/R_dir

我使用的下一个命令是:

library("fgui", lib.loc="~/Documents/R_dir")
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

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’
Run Code Online (Sandbox Code Playgroud)

我已经检查了线程" 在R中尝试加载库(ggplot2)时出错 "但它没有回答我的问题.

请帮助我提供任何建议,以使程序包fgui在R Studio中正常工作,并随时解决有效将外部程序包加载到R中的更一般问题.

Tho*_*mas 15

tcltk不是一个典型的包.它可能已经安装在您的系统上,并且无法使用常规install.packages过程进行安装,因为它不在CRAN上(就像R附带的基本软件包一样stats,等等).另外,tcltk2是不一样的tcltk; 这是一个扩展(并依赖于)功能的包tcltk.

所以,从这开始:

> capabilities("tcltk")
tcltk 
 TRUE
Run Code Online (Sandbox Code Playgroud)

如果它返回,FALSE则意味着您的R不是使用tcltk支持构建的.你没有说你正在使用什么操作系统,所以帮助你有点困难.

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

如果您使用的是Mac OS,则会遇到John Fox在此处描述的与Rcmdr相同的错误.简而言之,它可能是两件事之一:

  1. 与安装了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
    
    Run Code Online (Sandbox Code Playgroud)

如果系统命令的输出如上所示,您应该转到终端并执行以下操作:sudo chmod -R a+rX /usr/local并输入您的密码以更改目录权限.

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

它也可以通过创建符号链接来解决,如本答案中所述.

这应该永远不会出现在Windows上,除非您在没有tcl/tk支持的情况下从源代码构建R.

  • 上面的功能命令对我来说很好用。我正在使用MacOSX,并查看了上面的链接。确实,我收到的“ tcltk”错误与该链接底部发布的错误非常相似。但是,运行`system(“ ls -ld / usr / local / usr / local / lib / usr / local / lib / libtcl *”)`对我来说没有文件权限错误,并执行`sudo chmod -R a + rX / usr / local`仔细检查并重新运行所有内容并不能解决问题。输入`library(tcltk)`会为我返回一个错误,无论如何,错误:'tcltk'的程序包或名称空间加载失败 (2认同)

joe*_*lom 8

在 Arch Linux 上,tk是一个单独的软件包tcl,并且两者都需要安装:

sudo pacman -S tcl tk
Run Code Online (Sandbox Code Playgroud)

考虑到capabilities("tcltk")with R的输出为TRUE(这意味着您的 R 是tcltk在此处的答案中前面提到的支持下编译的,如果您从 arch 存储库安装了它,则应该是这种情况)。


R Y*_*oda 7

R官方安装说明说:

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

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


小智 5

  1. 删除位置上的X11文件:/ opt
  2. 在应用程序单元上删除X11
  3. 再次重新安装X11

问题解决了...