我想使用R.NET库链接到IronPython中的R统计包。它工作正常,但现在我需要使用R的mgcv库。
导入mgcv
失败(导入是使用命令rdn.r.EagerEvaluate("library(mgcv)")
完成的,其中rdn
是包装R.NET库的IronPython对象)。导入失败时,Windows会打开一个对话框,提示:“程序无法启动,因为您的计算机缺少Rlapack.dll。请尝试重新安装程序以解决此问题。”
当然,如果Rlapack.dll丢失,R就不会在第一时间工作,所以发生了什么?
答案 0 :(得分:3)
我检查了mgcv
包的依赖关系;它们包括基础包Matrix
。事实证明,R {开发团队已将Matrix
编译为dll(在$ {R_HOME} /library/Matrix/libs/i386/Matrix.dll中找到)。该DLL需要链接到Rlapack.dll,由于某种原因,当在IronPython中从R.NET调用R时,它无法找到。
解决方案是将Rlapack.dll(可以在$ {R_HOME} / bin / i386 /中找到)的副本放到与Matrix.dll相同的目录中。现在每天都是星期天。
答案 1 :(得分:2)
compositions.dll
我遇到了同样的问题。
因此,我没有将Rlapack.dll
复制到compositions.dll
所在的目录,而是将bin
目录添加到PATH
。
string rhome = System.Environment.GetEnvironmentVariable("R_HOME");
if (string.IsNullOrEmpty(rhome))
rhome = @"C:\Program Files\R\R-2.14.0";
System.Environment.SetEnvironmentVariable("R_HOME", rhome);
System.Environment.SetEnvironmentVariable("PATH", System.Environment.GetEnvironmentVariable("PATH") + ";" + rhome + @"\bin\i386");