R 関数を呼び出して結果を Excel に返す Excel の関数 (Excel の引数を取る) が必要です。RExcel は (もう) CRAN 上にないようで、私はまだ代替手段を見つけていません。これを達成する方法を知っている人はいますか?
制約の 1 つは、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;
}
}
関数 MultiplyThem() は Excel で呼び出すことができ、機能します。そのまま、MyRTest も同様です。しかし、コメントアウトされたメソッドのいずれかを使用して R をインスタンス化しようとするとすぐに、Excel で #Value エラーが返されます。それを理解しようとして、コマンド ライン アプリケーションを使用し、ここ(v1.5) から例をコピーしました。ただし、engine.Initialize();
エラーまたは例外なしで、デバッガーが終了したばかりの行で。R12.15.1 (32 ビット)、Windows Vista (32 ビット)、Visual Studio 2010 Professional、RdotNet 1.5.0 を使用しています。何がうまくいかなかったのでしょうか?