Пример #1
0
        static void Main(string[] args)
        {
            var    rHome = "/usr/lib/R";
            string path  = Environment.GetEnvironmentVariable("PATH") ?? String.Empty;

            // Note that using /usr/lib where a libR.so symlink exists is not good enough
            path = string.Concat(path, ":", "/usr/lib/R/lib");
            Environment.SetEnvironmentVariable("R_HOME", rHome);
            Environment.SetEnvironmentVariable("PATH", path);

            Console.WriteLine("R init: creating R engine");
            REngine rEngine = REngine.CreateInstance("RDotNet");

            rEngine.Initialize();
            Console.WriteLine("Created rEngine: " + rEngine.ToString());

            // simple arithmetic test
            const string arithmeticExpression = "2 + 14 * 7";
            var          result = rEngine.Evaluate(arithmeticExpression).AsNumeric().ToArray();

            Console.WriteLine(arithmeticExpression + " = " + result[0]);

            // test the problematic CreateNumericVector method
            // Missing method RDotNet.REngineExtension::CreateNumericVector(REngine,IEnumerable`1<double>) in assembly /data/col52j/calibration-files/bin/Release/R.NET.dll
            // values <- 0:99
            double[] values = new double[100];
            for (int i = 0; i < values.Length; i++)
            {
                values[i] = i;
            }
            rEngine.SetSymbol("values", rEngine.CreateNumericVector(values));
            // calculate the sum
            // sum(values) # 4950
            string sum = "sum(values)";

#if RDN15
            result = rEngine.Evaluate(sum).AsNumeric().ToArray();
#else
            result = rEngine.EagerEvaluate(sum).AsNumeric().ToArray();
#endif
            Console.WriteLine("Sum of integer range 0:99 = " + result[0]);
        }
Пример #2
0
 public static double [] MyRnorm(int number)
 {
     return(rengine.EagerEvaluate("rnorm(" + number + ")").AsNumeric().ToArray <double>());
 }