Consuming RdotNET
[This article was first published on Naught Not Knot, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
In my explorations with R, Mathematica, FreeMat, MatLab, and RapidMiner (now with R support! Yay!), I’m seeing integration of R to be quite useful in building a trading app, as technical analysis is one of R’s fortés. For the sake of brevity, I’m including comments in the code instead of using paragraphs…use the source, Luke.Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Note that I’m not using the R(D)COM package, but the RdotNET package found here. It’s open source (thanks for the correction, Carlitos)
The Source, Luke:
1: using System; 2: using System.Linq; 3: using RDotNet; 4: 5: namespace R.NET_Wrapper 6: { 7: class Program 8: { 9: public static void Main(string[] args) 10: { 11: //Console.WriteLine("Hello World!"); 12: // Point the R Engine to the dll dir 13: RDotNet 14: .REngine 15: .SetDllDirectory( 16: @"C:\Program Files\R\R-2.12.1\bin\i386" 17: ); 18: 19: // make an instance, go ahead, do it 20: using 21: (REngine engine = 22: REngine 23: .CreateInstance("RInstance") 24: ) 25: { 26: // Let's see what it'll do. 27: // Let's create a numeric vector with a double[] 28: // .NET framework array to vector 29: NumericVector group1 = 30: engine.CreateNumericVector( 31: new double[] { 32: 30.02, 33: 29.99, 34: 30.11, 35: 29.97, 36: 30.01, 37: 29.99 38: }); 39: engine 40: .SetSymbol("group1", group1); // Dont forget this! 41: 42: // Here's the sssllooww way 43: NumericVector group2 = 44: engine 45: .EagerEvaluate( 46: "group2 <- c(29.89, 29.93, 29.72, 29.98, 30.02, 29.98)") 47: .AsNumeric(); 48: // EagerEvaluate will also accept IO.Stream (R scripts, anyone?) 49: 50: // Test difference of mean (student's t-test) and get P-value 51: GenericVector testResult = 52: engine 53: .EagerEvaluate("t.test(group1, group2)") 54: .AsList(); 55: double p = 56: testResult["p.value"] 57: .AsNumeric() 58: .First(); 59: 60: Console.WriteLine( 61: "Group 1 [{0}]", 62: string.Join( 63: ", ", 64: group1.Select(i => i.ToString())) 65: ); 66: Console.WriteLine( 67: "Group 2 [{0}]", 68: string.Join( 69: ", ", 70: group2.Select(i => i.ToString()) 71: ) 72: ); 73: Console.WriteLine("P-value = {0:0.000}", p); 74: } 75: 76: 77: //+ TODO: finish getting data into managed space 78: 79: Console.Write("Press any key to continue . . . "); 80: Console.ReadKey(true); 81: } 82: } 83: }
To leave a comment for the author, please follow the link and comment on their blog: Naught Not Knot.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.