Visual Studio C# 2012 の R ソフトウェアを使用したいのですが、誰かが R.NET でこれを行っていることに気付きました。R.2.15.2 (見つけたバージョン) をインストールします。R.NET は R (32 ビット) でのみ動作することに気付きました。32 と 64 は既にインストールしていますが、32 ビットにリンクしています。プログラムは DLL を見つけることができず、DLL が見つからないという例外をスローします。envPath が空で、変数が見つからないことに気付きました。誰かが私を助けてくれるのだろうか。
ありがとうございました。
static void Main(string[] args)
{
string PATH = @"c:\Users\Documents\Visual Studio 2012\Projects\ConsoleApplication1\packages\R.NET.1.5.0\lib\net40";
// Set the folder in which R.dll locates.
var envPath = Environment.GetEnvironmentVariable(PATH);
var rBinPath = @"C:\Program Files\R\R-2.15.2\bin\i386";
Environment.SetEnvironmentVariable(PATH, envPath + Path.PathSeparator + rBinPath);
using (REngine engine = REngine.CreateInstance("RDotNet"))
{
// Initializes settings.
engine.Initialize();
// .NET Framework array to R vector.
NumericVector group1 = engine.CreateNumericVector(new double[] { 30.02, 29.99, 30.11, 29.97, 30.01, 29.99 });
engine.SetSymbol("group1", group1);
// Direct parsing from R script.
NumericVector group2 = engine.Evaluate("group2 <- c(29.89, 29.93, 29.72, 29.98, 30.02, 29.98)").AsNumeric();
// Test difference of mean and get the P-value.
GenericVector testResult = engine.Evaluate("t.test(group1, group2)").AsList();
double p = testResult["p.value"].AsNumeric().First();
Console.WriteLine("Group1: [{0}]", string.Join(", ", group1));
Console.WriteLine("Group2: [{0}]", string.Join(", ", group2));
Console.WriteLine("P-value = {0:0.000}", p);
}
}