0

次のコードを使用して、c# から R に接続しようとしています。C# が R dll ファイルを読み取っていないようです。私のRインストールディレクトリはこれです:

C:\Users\R-2-13\R-2.13.0\bin\i386 

また、R.NET.dll をダウンロードして同じディレクトリに配置しました。Visual Studio で、R.NET.dll ファイルへの参照を設定します。次のコードを実行すると、コードは「R インストールが見つかりません」というキャッチ セクションに移動します。何か案は?誰かがこれを機能させましたか?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using RDotNet;

namespace RNet_Calculator
{
    public partial class Form1 : Form
    {

        // set up basics and create RDotNet instance 
        // if anticipated install of R is not found, ask the user to find it. 

        public Form1()
        {
            InitializeComponent();


            bool r_located = false;
            while (r_located == false)
            {
                try
                {
                    REngine.SetDllDirectory(@"C:\Users\R-2-13\R-2.13.0\bin\i386");
                    REngine.CreateInstance("RDotNet"); 
                    r_located = true;
                }

                catch { MessageBox.Show(@"Unable to find R installation's \bin\i386 folder. Press OK to attempt to locate it."); 

                        MessageBox.Show("error");

                } 
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}
4

1 に答える 1

3

これは、Winform アプリケーションを開発するためのhttp://rdotnet.codeplex.com/ (RDotNet) です。私は Shiny やその他すべての Web に似た R ツールをよく知っていますが、c# と R の組み合わせは、依然としてエンド ユーザーに好まれる組み合わせです。Shinyでボタンを無効にするなどの簡単なことを試してみてください...

残念なことに、rdotnet にはかなりのバグがあります。現在のバージョンでは、try キャッチされたものであっても、R 例外でクラッシュします。

これは言った:あなたがバージョン1.5を使用していることを絶対に確認してください. NuGet 経由でダウンロードすることをお勧めします。また、32 ビット R と 64 ビット C# を混在させていないかどうかも確認してください。

1.5 のヘルパー関数を使用すると、初期化は次のようになります。

  Helper.SetEnvironmentVariables();
  engine = REngine.CreateInstance(EngineName);
  engine.Initialize();
  # Assuming you want to catch the graphic window, use my RGraphAppHook
  # on the rdotnet site http://rdotnet.codeplex.com/workitem/7
  cbt = new RGraphAppHook { GraphControl = GraphPanelControl };
于 2013-03-21T19:17:20.833 に答える