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 安装”的 catch 部分。有任何想法吗?有没有人有这个工作?

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

这是http://rdotnet.codeplex.com/ (RDotNet) 用于开发 Winform 应用程序。虽然我非常了解 Shiny 和所有其他类似 Web 的 R 工具,但 c# 和 R 的组合仍然是我首选的最终用户组合。尝试简单的事情,例如使用 Shiny 禁用按钮...

太糟糕了 rdotnet 有很多错误;在当前版本中,它在 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 回答