Exemple #1
0
        /// <summary>
        /// Executes the function. Match the function arguments by name.
        /// </summary>
        /// <param name="argNames">The names of the arguments. These can be empty strings for unnamed function arguments</param>
        /// <param name="args">The arguments passed to the function</param>
        /// <returns></returns>
        protected SymbolicExpression InvokeViaPairlist(string[] argNames, SymbolicExpression[] args)
        {
            var names     = new CharacterVector(Engine, argNames);
            var arguments = new GenericVector(Engine, args);

            arguments.SetNames(names);
            var argPairList = arguments.ToPairlist();

            //IntPtr newEnvironment = Engine.GetFunction<Rf_allocSExp>()(SymbolicExpressionType.Environment);
            //IntPtr result = Engine.GetFunction<Rf_applyClosure>()(Body.DangerousGetHandle(), handle,
            //                                                      argPairList.DangerousGetHandle(),
            //                                                      Environment.DangerousGetHandle(), newEnvironment);
            return(createCallAndEvaluate(argPairList.DangerousGetHandle()));
        }
Exemple #2
0
        public void TestListSetNames()
        {
            //  http://stackoverflow.com/questions/33326594/how-can-i-create-named-list-members-object-in-r-net
            var engine = this.Engine;
            var list   = new GenericVector(engine, 2);

            // odpar <- list(mean = c(-1.5, 0, 1.5), var = c(0.5, 0.6, 0.8))
            list[0] = engine.CreateNumericVector(new[] { -1.5, 0, 1.5 });
            list[1] = engine.CreateNumericVector(new[] { 0.5, 0.6, 0.8 });
            list.SetNames("mean", "var");
            engine.SetSymbol("TestListSetNames", list);
            var listNames = engine.Evaluate("names(TestListSetNames)").AsCharacter().ToArray();

            Assert.AreEqual("mean", listNames[0]);
            Assert.AreEqual("var", listNames[1]);
        }