我正在尝试使用以下代码从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文件。当我运行以下代码时,代码进入catch部分“无法找到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)
{
}
}
}
答案 0 :(得分:3)
这是开发Winform应用程序的http://rdotnet.codeplex.com/(RDotNet)。虽然我非常了解Shiny和所有其他类似Web的R工具,但c#和R的组合仍然是我首选的最终用户组合。尝试简单的事情,例如用Shiny ......禁用按钮。
太糟糕的rdotnet非常多了;在当前版本中,它会在R exeptions上崩溃,即使是在尝试过的版本中也是如此。
这说:请确保您使用1.5版,而不是页面上愚蠢的“稳定”(=早期测试版)版本。最好通过NuGet下载。另外检查是否没有将32位R与64位c#混合。
使用1.5的Helper函数,初始化为:
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 };