有人问我是否可以“修复”在3.2.2版本中创建的R脚本,该脚本在4.2.2版本中停止工作。
脚本原来是使用tcltk
包的Tcl/tk接口。脚本以tclRequire("BWidget")
和tclRequire("Tktable")
开头。它产生的GUI基本上是,
1.导入csv
1.使用下拉菜单选择一列
1.第二个下拉菜单显示上述列的级别
1.做分析
问题出现在第3个,当使用更新的R版本时,下拉菜单只是空白的,没有可用的选择。
在使用同一系统(Window OS)时,当使用R版本3.2.2时,它返回
> tclRequire("BWidget")
<Tcl> 1.8
> tclRequire("Tktable")
<Tcl> 2.9
而使用R版本4.2.2返回
> tclRequire("BWidget")
<Tcl> 1.9.15
> tclRequire("Tktable")
<Tcl> 2.10
这是我第一次听说Tcl/Tk是什么,似乎Tcl中的差异是罪魁祸首,而不是R本身。
我读了https://stat.ethz.ch/R-manual/R-devel/library/tcltk/html/TclInterface.html并试图玩
addTclPath(path = ".")
tclRequire(package, warn = TRUE)
tclVersion()
但不知道该怎么做
有没有办法在我使用其他版本的R时,将Tcl指定为1.8和2.9?
1条答案
按热度按时间kqqjbcuj1#
**1)**一种方法是将R安装中的BWidget目录的内容替换为旧目录。在Windows上,您可以在
R.home("Tcl/lib/BWidget")
中找到它。**2)**另一种方法是将包含bWidget树的目录添加到路径中。
假设旧的BWidget是1.9.9版本,位于C:/PROGRA~1/R/R-3.5.2patched/Tcl/lib中,这是它们在我的系统中的位置。根据需要进行更改。特别是,您可能希望创建一个新目录,并将BWidget和TkTable树放在它下面。
然后运行这段R代码。首先添加指定的目录。然后确保系统忘记了BWidget,以防它已经被设置。最后加载所需版本的BWidget。
还要注意以下命令:
有关tcl package命令的详细信息,请参阅:https://www.tcl.tk/man/tcl/TclCmd/package.html
**3)**另一种方法是确定BWidget的两个版本之间的差异并修复您的程序。Windows上的免费winmerge程序非常适合比较两个目录。在Windows cmd行(根据需要更改目录):
更新
做了一些改进。似乎我们不需要在开始插入新的库--把它放在结尾就足够了--只要我们指定我们想要的特定版本。