Quantcast
Channel: R.NET
Viewing all articles
Browse latest Browse all 1634

Updated Wiki: Examples

$
0
0

Displaying a Chart with WPF Dynamic Data Display.

screenshot.png

App.xaml.cs
privatevoid Application_Startup(object sender, StartupEventArgs e)
{
   // Assumes that PATH is set correctly.
   REngine.CreateInstance("RDotNet");
}

privatevoid Application_Exit(object sender, ExitEventArgs e)
{
   REngine engine = REngine.GetInstanceFromID("RDotNet");
   if (engine != null)
   {
      engine.Close();
   }
}

MainWindow.xaml.cs
privatevoid Window_Loaded(object sender, RoutedEventArgs e)
{
   ObservableDataSource<Point> source = new ObservableDataSource<Point>();
   this.plotter.AddLineGraph(source, Colors.Black, 1.0, "RVector");

   REngine engine = REngine.GetInstanceFromID("RDotNet");
   NumericVector sequence = engine.Evaluate("x <- seq(-3, 3, 0.01)").AsNumeric();
   NumericVector dnorm = engine.Evaluate("dnorm(x, 0, 1)").AsNumeric();
   IEnumerable<Point> data = sequence.Zip(dnorm, (x, y) => new Point(x, y));
   source.AppendMany(data);
}

Seamlessness

R style
engine.Evaluate(@"x <- (0:12) * pi / 12
y <- cos(x)
print(y)");

Hybrid style
var x = engine.Evaluate("(0:12) * pi / 12").AsNumeric();
engine.SetSymbol("x", x);
var y = engine.Evaluate("cos(x)").AsNumeric();
Console.WriteLine(string.Join(" ", y));

C# style
var x = engine.CreateNumericVector(Enumerable.Range(0, 13).Select(i => i * Math.PI / 12).ToArray());
var cos = engine.GetSymbol("cos").AsFunction();
var y = cos.Invoke(new[] { x }).AsNumeric();
Console.WriteLine(string.Join(" ", y));

Viewing all articles
Browse latest Browse all 1634

Trending Articles