C#からユーザ定義(カスタム)R関数を呼び出すことはできますか?例えばC#からユーザ定義の(カスタム)R関数を呼び出すことはできますか?
Rで書かれた簡単な行列乗算機能:
matrix_mult = function(a, b) {
c = a %*% b;
return c;
}
がどのように私はこのR関数matrix_mult(a、b)はCから呼び出すことができます#?
C#からユーザ定義(カスタム)R関数を呼び出すことはできますか?例えばC#からユーザ定義の(カスタム)R関数を呼び出すことはできますか?
Rで書かれた簡単な行列乗算機能:
matrix_mult = function(a, b) {
c = a %*% b;
return c;
}
がどのように私はこのR関数matrix_mult(a、b)はCから呼び出すことができます#?
いくつかの調査の後、私は自分自身で答えを見つけました。
1)MS Visual Studioで既存のプロジェクトまたは新しいプロジェクトを開きます。
2) http://rdotnet.codeplex.com
インストールは簡単です)R.NET(NuGetをインストールします。 メニュー:Visual Studioの(2012)>ライブラリパッケージマネージャ]> [パッケージマネージャコンソール タイプ "インストール・パッケージR.NET"
3)[ここ](http://cran.r-project.org/doc/manuals Rの関数を初期化し、R
using RDotNet;
class Program
{
static void Main(string[] args)
{
// Set the folder in which R.dll locates.
var envPath = Environment.GetEnvironmentVariable("PATH");
// check the version and path on your computer
var rBinPath = @"C:\Program Files\R\R-2.14.1\bin\x64";
Environment.SetEnvironmentVariable("PATH", envPath + System.IO.Path.PathSeparator + rBinPath);
using (REngine engine = REngine.CreateInstance("RDotNet"))
{
// Initializes settings.
engine.Initialize();
// create an R function
// R style
// See: http://rdotnet.codeplex.com/wikipage?title=Examples&referringTitle=Home
Function matrix_mult = engine.Evaluate(@"matrix_mult <- function(a,b){
c = a %*% b;
return(c);
}").AsFunction();
NumericMatrix d = engine.Evaluate(@"d <- matrix_mult(a,b)").AsNumericMatrix();
Console.WriteLine("Matrix d:");
engine.Evaluate("print(d)");
// convert NumericMatrix of R to double[,] of .net
double[,] darr = new double[d.RowCount, d.ColumnCount];
d.CopyTo(darr, d.RowCount, d.ColumnCount);
Console.ReadKey();
}
}
}
行列aとbをどのようにしてR関数に渡すことができますか? –
誰かがc#で何らかの入力を定義し、それをRに渡したいと思っている人は、どうやってそれを行うことができますか?私はある変数に格納されているベクトルを渡したかったのですが、同じ変数が二重引用符でR入力ベクトルに渡されていましたが、変数が見つかりませんでしたエラーが表示されました。 これを行う方法はありますか? –
配列パラメータがC#からRに渡される方法を知るには、http://finaquant.com/table-data-as-input-to-estimationの私の記事「Rの推定関数への入力としてのテーブルデータ」を参照してください。 -functions-in-r/3082 C#のコード例を参照してください。 – tuncalik
のデータタイプを参照http://rdotnet.codeplex.com/documentation C# から呼び出します/r-release/R-exts.html#The-R-API)は、* R *を使った* C *インタフェーシングの* R *マニュアルセクションへのリンクです。 P/Invokeを使用すると、代わりにC#から対応する呼び出しを適用するのはかなり簡単です。 –
RフォームC#をなぜ呼びたいのかについて、文脈と理由についての詳細を教えてください。 – agstudy
@agstudy Rで書かれた行列関数を.netの関数ルーター構成で使用するためにhttp://finaquant.com/function-router/2802 – tuncalik