コード例 #1
0
        static void Main(string[] args)
        {
            // Init R session
            IRHostSession session          = RHostSession.Create("Test");
            Task          sessionStartTask = session.StartHostAsync(new RHostSessionCallback());

            sessionStartTask.Wait();

            // Simple output from console
            Console.WriteLine("Arbitrary R code:");
            var result = session.ExecuteAndOutputAsync("Sys.info()");

            result.Wait();
            Console.WriteLine(result.Result.Output);

            // Create R DataFrame
            List <string> colNames = new List <string>(new string[] { "c1", "c2" });
            List <string> rowNames = new List <string>(new string[] { "1", "2", "3", "10" });

            var xx   = new object[] { new object[] { 1, 3, 43, 54 }, new object[] { "a", "c", "a", "d" } };
            var list = new List <IReadOnlyCollection <object> >();

            foreach (object o in xx)
            {
                list.Add(o as object[]);
            }

            DataFrame df  = new DataFrame(rowNames, colNames, list.AsReadOnly());
            var       dtc = session.CreateDataFrameAsync("data", df);

            dtc.Wait();

            // Print data frame in R session
            result = session.ExecuteAndOutputAsync("print(data)");
            result.Wait();
            Console.WriteLine("\nR data frame:");
            Console.WriteLine(result.Result.Output);

            var resultList = session.GetListAsync("list(mean(data$c1), 111)");

            Console.WriteLine("\nList elements returned from R to C#:");
            Console.WriteLine(Convert.ToDouble(resultList.Result[0]) * 100);
            Console.WriteLine(resultList.Result[1]);

            session.StopHostAsync();
            Console.ReadLine();
        }
コード例 #2
0
        public async Task OutputAsync(string expression, bool isError, string expected)
        {
            var output = await _session.ExecuteAndOutputAsync(expression);

            if (isError)
            {
                output.Errors.Should().Be(expected);
            }
            else
            {
                output.Output.Should().Be(expected);
            }
        }
コード例 #3
0
ファイル: RHostApiTestForm.cs プロジェクト: dlastor/RTVS-cs
        private async void executeButton_Click(object sender, EventArgs e)
        {
            try {
                await _sessionStartTask;
                var   result = await _session.ExecuteAndOutputAsync(codeBox.Text);

                DisplayResult(new TextBox()
                {
                    Text = result.Output
                });
            } catch (Exception ex) {
                DisplayResult(ex.Message);
            }
        }
コード例 #4
0
        public async Task CallMyFunction(double x, double y)
        {
            await task;

            if (!scriptExecuted)
            {
                await session.ExecuteAsync(File.ReadAllText(scriptPath));

                // Можно попробовать так
                //await session.ExecuteAsync("source('full\\path\\to\\Script.R')");
                scriptExecuted = true;
            }

            var res = await session.ExecuteAndOutputAsync($"my.f({x}, {y})");

            Console.WriteLine(res.Output);
        }
コード例 #5
0
ファイル: ROperations.cs プロジェクト: gbull122/vscode-r
 public async Task <RSessionOutput> ExecuteAndOutputAsync(string command)
 {
     return(await rHostSession.ExecuteAndOutputAsync(command));
 }