Project Description: R.NET enables .NET Framework to collaborate with R statistical computing. R.NET requires .NET Framework 4 and native DLLs installed with R environment. You need no other extra installations. Enjoy statistics and programming in your special language with R.
Some examples are below. Learn how to use R.NET.
Program.cs
Some examples are below. Learn how to use R.NET.
Available in NuGet Gallery
New version 1.5 of binary is released in NuGet Gallery. Just type "Install-Package R.NET" to install it.Current Issues
- Current version of R.NET is not able to draw charts on the default window device on Windows natively (but see How to display an R Graph in a .NET Winform). Graphics engine is under development.
- Multiple initialization fails (in multiple engines running at the same time ): this problem occurs because native R cannot make multiple initialization in single process. Creating a child process and making an REngine instance in the process is an evasive solution.
Examples
- This example illustrates how R.NET works with C#. More examples are available at Examples page.
Program.cs
using System; using System.IO; using System.Linq; using RDotNet; class Program { staticvoid Main(string[] args) { // Set the folder in which R.dll locates.// See Documentation for automatic search of installation path.var envPath = Environment.GetEnvironmentVariable("PATH"); var rBinPath = @"C:\Program Files\R\R-2.15.1\bin\x64"; Environment.SetEnvironmentVariable("PATH", envPath + Path.PathSeparator + rBinPath); // For Linux or Mac OS, R_HOME environment variable may be needed.//Environment.SetEnvironmentVariable("R_HOME", "/usr/lib/R")using (REngine engine = REngine.CreateInstance("RDotNet")) { // From v1.5, REngine requires explicit initialization.// You can set some parameters. engine.Initialize(); // .NET Framework array to R vector. NumericVector group1 = engine.CreateNumericVector(newdouble[] { 30.02, 29.99, 30.11, 29.97, 30.01, 29.99 }); engine.SetSymbol("group1", group1); // Direct parsing from R script. NumericVector group2 = engine.Evaluate("group2 <- c(29.89, 29.93, 29.72, 29.98, 30.02, 29.98)").AsNumeric(); // Test difference of mean and get the P-value. GenericVector testResult = engine.Evaluate("t.test(group1, group2)").AsList(); double p = testResult["p.value"].AsNumeric().First(); Console.WriteLine("Group1: [{0}]", string.Join(", ", group1)); Console.WriteLine("Group2: [{0}]", string.Join(", ", group2)); Console.WriteLine("P-value = {0:0.000}", p); } } }