C# 重组';不包含';设置目录'';RDotNet
我的代码C# 重组';不包含';设置目录'';RDotNet,c#,r,visual-studio-2010,C#,R,Visual Studio 2010,我的代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using RDotNet; using RDotNet.Devices; using RDotNet.Internals; using Microsoft.Win32; na
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using RDotNet;
using RDotNet.Devices;
using RDotNet.Internals;
using Microsoft.Win32;
namespace Con_R
{
class Program
{
static void Main(string[] args)
{
string rhome = System.Environment.GetEnvironmentVariable("R_HOME");
if (string.IsNullOrEmpty(rhome))
rhome = @"C:\Program Files\R\R-3.3.1";
System.Environment.SetEnvironmentVariable("R_HOME", rhome);
System.Environment.SetEnvironmentVariable("PATH", System.Environment.GetEnvironmentVariable("PATH") + ";" + rhome + @"binx64");
// Set the folder in which R.dll locates.
//REngine.SetDllDirectory(@"C:Program FilesRR-2.12.0bini386″);
REngine.SetDllDirectory(@"C:\Program Files\R\R-3.3.1\bin\x64");
// REngine e = REngine.CreateInstance("test", new[] { "" });
using (REngine engine = REngine.CreateInstance("RDotNet", new[] { "-q" })) // quiet mode
{
foreach (string path in engine.EagerEvaluate(".libPaths()").AsCharacter())
{
Console.WriteLine(path);
}
engine.Evaluate(".libPaths(C:\\Program Files\\R\\R-3.3.1\\library)");
engine.Evaluate("source(D:\\R\\Script\\load_forecast_grid.r)");
Console.ReadLine();
}
}
}
}
获取以下错误
错误1“RDotNet.REngine”不包含“setdldirectory”的定义C:\Users\Shrinith\u Sanil\Documents\Visual Studio 2013\Projects\Con\u R\Program.cs 161 21 Con\R
错误2“RDotNet.REngine”不包含“CreateInstance”的定义C:\Users\Shrinith\u Sanil\Documents\Visual Studio 2013\Projects\Con\Con\Con\R\Program.cs 164 45 Con\u R
添加了
错误3“RDotNet.REngine”不包含“急切评估”的定义,并且找不到接受“RDotNet.REngine”类型的第一个参数的扩展方法“急切评估”(是否缺少using指令或程序集引用?)C:\Users\Shrinith\u Sanil\Documents\Visual Studio 2013\Projects\Con_R\Con_R\Program.cs 167 48 Con_R
只需使用评估
而不是评估
,因为它在当前版本的RDotNet上不可用
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using RDotNet;
using Microsoft.Win32;
namespace Con_R
{
class Program
{
static void Main(string[] args)
{
string rhome = System.Environment.GetEnvironmentVariable("R_HOME");
if (string.IsNullOrEmpty(rhome))
rhome = @"C:\Program Files\R\R-3.3.1";
System.Environment.SetEnvironmentVariable("R_HOME", rhome);
System.Environment.SetEnvironmentVariable("PATH", System.Environment.GetEnvironmentVariable("PATH") + ";" + rhome + @"binx64");
// Set the folder in which R.dll locates.
//REngine.SetDllDirectory(@"C:Program FilesRR-2.12.0bini386″);
REngine.SetDllDirectory(@"C:\Program Files\R\R-3.3.1\bin\x64");
// REngine e = REngine.CreateInstance("test", new[] { "" });
using (REngine engine = REngine.CreateInstance("RDotNet", "-q" )) // quiet mode
{
foreach (string path in engine.Evaluate(".libPaths()").AsCharacter())
{
Console.WriteLine(path);
}
engine.Evaluate(".libPaths(C:\\Program Files\\R\\R-3.3.1\\library)");
engine.Evaluate("source(D:\\R\\Script\\load_forecast_grid.r)");
Console.ReadLine();
}
}
}
}
通过使用.Net框架的R.Net协作与R统计计算 问题得到解决,下面是代码中的一些修改
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using RDotNet;
using Microsoft.Win32;
using System.IO;
namespace Con_R2
{
class Program
{
static string rPath = "";
static void Main(string[] args)
{
SetupPath(); // current process, soon to be deprecated
using (REngine engine = REngine.CreateInstance("RDotNet"))
{
engine.Initialize(); // required since v1.5
REngine.SetDllDirectory(rPath);
foreach (string path in engine.Evaluate(".libPaths()").AsCharacter())
{
Console.WriteLine(path);
}
engine.Evaluate(".libPaths(C:\\Program Files\\R\\R-3.3.1\\library)");
//engine.Evaluate("source('c:/Program Files/R/R-3.3.1/bin/load_forecast_grid.r')");
engine.Evaluate("source('c:/Program Files/R/R-3.3.1/bin/testcmd.r')");
Console.ReadLine();
Console.ReadKey();
}
}
public static void SetupPath(string Rversion = "R-3.3.1")
{
var oldPath = System.Environment.GetEnvironmentVariable("PATH");
rPath = System.Environment.Is64BitProcess ?
string.Format(@"C:\Program Files\R\{0}\bin\x64", Rversion) :
string.Format(@"C:\Program Files\R\{0}\bin\i386", Rversion);
if (!Directory.Exists(rPath))
throw new DirectoryNotFoundException(
string.Format(" R.dll not found in : {0}", rPath));
var newPath = string.Format("{0}{1}{2}", rPath,
System.IO.Path.PathSeparator, oldPath);
System.Environment.SetEnvironmentVariable("PATH", newPath);
}
}
}
谢谢你的回复,莫,这很有效,我还收到了另外两个错误:错误1“RDotNet.REngine”不包含“setdldirectory”的定义C:\Users\Shrinith\u Sanil\Documents\visualstudio 2013\Projects\Con\R\Con\R\Program.cs 163 21 Con\R错误2“RDotNet.REngine”不包含“CreateInstance”的定义C:\Users\Shrinith\u Sanil\Documents\visualstudio2013\Projects\Con_R\Con_R\Program.cs 166 45 Con_R您是否使用Nuget添加了当前版本的RDotNet?请确保安装了正确的dll。