我有一个关于如何有效地将任何类型的外部包加载到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’
我已经检查了线程" Error when trying to load library(ggplot2) in R"但它没有回答我的问题。
请帮助我提供任何建议,让我们的程序包fgui
在R Studio中正常运行,并随时解决有效将外部程序包加载到R中的更常见问题。
答案 0 :(得分:15)
tcltk
不是典型的套餐。它可能已安装在您的系统上,并且无法使用通常的install.packages
过程进行安装,因为它不在CRAN上(就像R附带的基本软件包一样,如stats
等) )。此外,tcltk2
与tcltk
不同;这是一个扩展(并依赖于)tcltk
的功能的包。
所以,从这开始:
> capabilities("tcltk")
tcltk
TRUE
如果返回FALSE
,则表示您的R不是使用tcltk支持构建的。你不会说你正在使用什么操作系统,所以帮助你有点困难。
也就是说,如果您使用 Linux ,则需要重建R with tcltk support。这应该相对简单。基本上,确保系统上的Tcl和tk在标准位置(类似sudo apt-get install tcl8.5-dev tk8.5-dev
)可用,然后按照常规程序重建R.
如果您使用 Mac OS ,则会遇到与John Fox describes here in relation to 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
并输入您的密码以更改目录权限。
通过创建符号链接as described in this answer也可以解决这个问题。
除非您在没有tcl / tk支持的情况下从源代码构建R,否则永远不会出现 Windows 。
答案 1 :(得分:7)
official installation instructions for R说:
注意:使用X11(包括tcltk)需要XQuartz 安装,因为它不再是OS X的一部分。始终重新安装 将OS X升级到新的主要版本时的XQuartz。
所以:如果你想在R中使用tcltk
包,只需(重新)安装XQuartz。
答案 2 :(得分:5)
问题解决了......
答案 3 :(得分:1)
对于Mac-OS用户:
我最近一直在努力解决这个问题,并发现R-3.1.2有一个错误,它假设 otool 安装时没有。
R-3.0.0(及更高版本)附带Tck / Tk 8.6.0,因此您无需安装。
只需升级到更新版本的R(3.4.2)即可解决问题。
答案 4 :(得分:1)
我遇到了同样的问题,在发现一个简单的修复方法之前掉了一个兔子洞。如果从bianry安装R,则默认情况下它将包括tcltk。只需使用默认安装运行安装程序。您可以在此处获取.dmg:https://cran.r-project.org/bin/macosx/
答案 5 :(得分:0)
在Arch Linux上,tk
是与tcl
不同的软件包,并且都需要安装:
sudo pacman -S tcl tk
假设capabilities("tcltk")
中带有R的输出为TRUE
(这意味着您的R是在tcltk
支持下编译的,如前面在此处的答案所述,应该是这种情况如果您是从arch仓库安装的。)