我想在 Excel 中拥有调用 R-Functions 并将结果返回给 Excel 的函数(采用 Excel 参数)。RExcel 似乎不再在 CRAN 上,我还没有找到替代方案。有谁知道实现这一目标的方法?
一个限制是,即使在 Windows Vista 上没有管理员权限,该解决方案也应该可以工作。
编辑:感谢您的评论。我们尝试过 R.Net,但收效甚微。我们去了:
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ExcelDna.Integration;
using System.Windows.Forms;
using RDotNet;
using RDotNet.NativeLibrary;
public static class MyFunctions
{
[ExcelFunction(Description = "Test R connection")]
public static double MyRTest(double x)
{
var envPath = Environment.GetEnvironmentVariable("PATH");
var rBinPath = @"D:\Programme\R\R-2.15.1\bin\i386";
Environment.SetEnvironmentVariable("PATH", envPath + Path.PathSeparator + rBinPath);
// using (REngine engine = REngine.CreateInstance("RDotNet"))
// {
// }
// REngine rengine = REngine.CreateInstance("RDotNet");
return (2*x);
} // End Function
[ExcelFunction(Description="Multiplies two numbers", Category="Useful functions")]
public static double MultiplyThem(double x, double y)
{
return x * y;
}
}
可以在 Excel 中调用 MultiplyThem() 函数并且它可以工作。照原样,MyRTest 也是如此。但是,一旦我尝试使用注释掉的任何一种方法来实例化 R,它就会在 Excel 中返回 #Value 错误。为了理解它,我们选择了一个命令行应用程序,只是从这里复制了示例(v1.5)。然而,engine.Initialize();
调试器刚刚终止,没有错误或异常。我们使用 R12.15.1(32 位)、Windows Vista(32 位)、Visual Studio 2010 Professional 和 RdotNet 1.5.0。可能出了什么问题?