// STATUS [ July 9, 2019 ] : this works
        /// <summary>
        ///     Get list of Mlb player's Player Id, First Name, Last Name
        /// </summary>
        /// <param name="lastName">todo: describe lastName parameter on GetPlayerInfoForAllPlayersWithLastName</param>
        /// <remarks>
        ///     See: 'playerInfo' section @ http://lahman.r-forge.r-project.org/doc/
        ///     See: https://analyticsrusers.blog/2018/05/31/leverage-r-code-within-net-environments-running-a-cvar-model-in-a-c-applications/
        /// </remarks>
        /// <example>
        ///     var playerInfoList = GetPlayerInfoForAllPlayersWithLastName("rizzo");
        /// </example>
        /// <returns>
        ///     List of LahmanPlayerInfo that includes: Lahman Id, First Name, Last Name
        /// </returns>
        public List <LahmanPlayerInfo> GetPlayerInfoForAllPlayersWithLastName(string lastName)
        {
            _h.StartMethod();

            var engine = _r.CreateNewREngine();

            engine.Evaluate("library(Lahman)");

            CharacterVector lastNameVector = _r.CreateCharVect(engine, lastName);

            engine.SetSymbol("lastNameVector", lastNameVector);
            lastNameVector.Dispose();

            SymbolicExpression lastEval  = engine.Evaluate("playerInfo(lastNameVector)");
            DataFrame          dataFrame = lastEval.AsDataFrame();

            var rowCount = dataFrame.RowCount;
            List <LahmanPlayerInfo> playerinfoList = new List <LahmanPlayerInfo>();

            for (var indexer = 0; indexer <= rowCount - 1; indexer++)
            {
                var playerInfo = CreateLahmanPlayerInfoInstance(dataFrame, indexer, lastName);
                playerinfoList.Add(playerInfo);
            }
            _h.Dig(playerinfoList);
            // engine.Evaluate("playerInfo(lastNameVector)");
            return(playerinfoList);
        }
Esempio n. 2
0
        private void button2_Click(object sender, EventArgs e)
        {
            string  result;
            string  input;
            REngine engine;

            //init the R engine
            REngine.SetEnvironmentVariables();
            engine = REngine.GetInstance();
            engine.Initialize();

            //input
            Console.WriteLine("Please enter the calculation");
            input = Console.ReadLine();

            //calculate
            CharacterVector vector = engine.Evaluate(input).AsCharacter();

            result = vector[0];

            //clean up
            engine.Dispose();

            //output
            Console.WriteLine("");
            Console.WriteLine("Result: '{0}'", result);
            Console.WriteLine("Press any key to exit");
            Console.ReadKey();
        }
Esempio n. 3
0
        private void MakePtfReport(string[] input_files, string path_out, string report_name)
        {
            // make sure we start in the correct directory with a clean environment
            engine.Evaluate("rm(list=ls())");
            engine.Evaluate("gc()");
            engine.Evaluate("setwd('C:/Users/Keiran/Documents/Backtest_Source/R')");

            // pass pnl files into R
            CharacterVector r_input_files = engine.CreateCharacterVector(input_files);

            engine.SetSymbol("filenames", r_input_files);

            // output directory
            CharacterVector r_path_out = engine.CreateCharacterVector(new string[] { path_out });

            engine.SetSymbol("path.out", r_path_out);

            // report name
            CharacterVector r_filestem = engine.CreateCharacterVector(new string[] { report_name });

            engine.SetSymbol("filestem", r_filestem);

            // pass in dates and flags
            LogicalVector r_relrtns = engine.CreateLogicalVector(new bool[] { relative_returns });

            engine.SetSymbol("rel.rtns", r_relrtns);
            CharacterVector r_startEndDate = engine.CreateCharacterVector(new string[] { date_start.ToShortDateString(), date_end.ToShortDateString() });

            engine.SetSymbol("start.end.dates", r_startEndDate);


            // 2. sanity checks
            engine.Evaluate("print(rel.rtns)");
            engine.Evaluate("print(start.end.dates)");
            engine.Evaluate("print(filenames)");
            engine.Evaluate("print(path.out)");
            engine.Evaluate("print(filestem)");

            // 3. run R script to make daily pnl
            engine.Evaluate("source('PortfolioMakeReport.R')");

            // 4. copy pdf report to output directory
            string pdffile      = report_name + ".pdf";
            string pdffile_orig = System.IO.Path.Combine(@"C:\Temp\TeX_Tmp\", pdffile);

            pdffile_dest = System.IO.Path.Combine(path_out, pdffile);
            File.Copy(pdffile_orig, pdffile_dest, true);

            // 5. copy daily and monthly pnl files to output directory
            string daily_file      = report_name + "_pnl_daily.csv";
            string daily_file_orig = System.IO.Path.Combine(@"C:\Temp\TeX_Tmp\", daily_file);
            string daily_file_dest = System.IO.Path.Combine(path_out, daily_file);

            File.Copy(daily_file_orig, daily_file_dest, true);
            string monthly_file      = report_name + "_pnl_monthly.csv";
            string monthly_file_orig = System.IO.Path.Combine(@"C:\Temp\TeX_Tmp\", monthly_file);
            string monthly_file_dest = System.IO.Path.Combine(path_out, monthly_file);

            File.Copy(monthly_file_orig, monthly_file_dest, true);
        }
Esempio n. 4
0
        static void Main(string[] args)
        {
            string  result;
            string  input;
            REngine engine;

            /* init the R engine */
            REngine.SetEnvironmentVariables();
            engine = REngine.GetInstance();
            engine.Initialize();

            /* input */
            Console.WriteLine("Please enter the calculation");
            input = Console.ReadLine();

            /* calculate */
            CharacterVector vector = engine.Evaluate(input).AsCharacter();

            result = vector[0];

            /* clean up */
            engine.Dispose();

            /* output */
            Console.WriteLine("");
            Console.WriteLine("Result: '{0}'", result);
            Console.WriteLine("Press any key to exit");
            Console.ReadKey();
        }
        public void Analyse(List <string> inputTweets)
        {
            REngine.SetEnvironmentVariables();
            REngine engine = REngine.GetInstance();

            try
            {
                inputTweets.ForEach(x => RCharVector.AddRange(x.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries)));
                inputTweets.ForEach(x => RCharVector.RemoveAll(y => string.IsNullOrEmpty(y.Trim())));
                if (inputTweets.Count > 0)
                {
                    engine.Evaluate("library('syuzhet')");
                    CharacterVector gp3 = engine.CreateCharacterVector(RCharVector);
                    engine.SetSymbol("grp3", gp3);
                    engine.Evaluate("grp3");
                    engine.Evaluate("g <- get_nrc_sentiment(grp3)");
                    engine.Evaluate("barplot(colSums(prop.table(g[, 3:8])))");
                }
                else
                {
                    Console.WriteLine("No Tweets found with input data. Please change input data.");
                }
            }
            finally
            {
                engine.Dispose();
            }
        }
Esempio n. 6
0
        private void frmSaveESFFull_Load(object sender, EventArgs e)
        {
            try
            {
                frmProgress pfrmProgress = new frmProgress();
                pfrmProgress.lblStatus.Text    = "Creating EVs:";
                pfrmProgress.pgbProgress.Style = ProgressBarStyle.Marquee;
                pfrmProgress.Show();

                m_pEngine.Evaluate("sample.n <- length(sample.nb)");
                m_pEngine.Evaluate("sample.listb <- nb2listw(sample.nb, style='B')");
                m_pEngine.Evaluate("B <- listw2mat(sample.listb); M <- diag(sample.n) - matrix(1/sample.n, sample.n, sample.n); MBM <- M%*%B%*%M");
                m_pEngine.Evaluate("eig <- eigen(MBM)");

                nmEVs    = m_pEngine.Evaluate("eig$vectors").AsNumericMatrix();
                cvEVName = m_pEngine.Evaluate("paste('EV', 1:sample.n, sep='')").AsCharacter();
                nvEValue = m_pEngine.Evaluate("eig$values").AsNumeric();

                intNEVs = nmEVs.RowCount;


                for (int i = 0; i < intNEVs; i++)
                {
                    string strItemName = cvEVName[i] + " (" + Math.Round(nvEValue[i], 3).ToString() + ")";
                    clistFields.Items.Add(strItemName);
                }
                //m_pEngine.Evaluate("rm(list = ls(all = TRUE))"); //Remove all items from memory.
                pfrmProgress.Close();
            }
            catch (Exception ex)
            {
                frmErrorLog pfrmErrorLog = new frmErrorLog(); pfrmErrorLog.ex = ex; pfrmErrorLog.ShowDialog();
                return;
            }
        }
Esempio n. 7
0
        private void ClusteringMethKMean(List <int> activeVariables)
        {
            string          clust_kmean    = tmpFolder + "clust_kmean.png";
            CharacterVector fileNameVector = engine.CreateCharacterVector(new[] { clust_kmean });

            engine.SetSymbol("clust_kmean", fileNameVector);
            engine.Evaluate("library(cluster)");
            engine.Evaluate("library(ggplot2)");
            string clusVar = "";

            for (int k = 0; k < activeVariables.Count; k++)
            {
                clusVar += ((1 + activeVariables[k]).ToString()) + ",";
            }
            clusVar = clusVar.Substring(0, clusVar.Length - 1);
            engine.Evaluate("corV <- c(" + clusVar + ")");
            engine.Evaluate("kclust <- kmeans(as.matrix(dataset[, corV]), centers = 9)");
            engine.Evaluate("png(filename=clust_kmean, width=6, height=6, units='in', res=100)");
            engine.Evaluate("clusplot(dataset[,corV], kclust$cluster, main='K-Mean', xlab = \"\", ylab =  \"Height\" , color=TRUE, shade=TRUE, labels=2, lines=0)");
            engine.Evaluate("dev.off()");
            worddoc.InlineShapes.AddPicture(clust_kmean, false, true, wrange);
            latexText += "\n\\begin{frame}\\frametitle{K-Mean}" +
                         "\n     \\begin{figure}" +
                         "\n         \\centering" +
                         "\n             \\includegraphics[scale=0.48]{clust_kmean.png}" +
                         "\n             \\caption{K-Mean}" +
                         "\n     \\end{figure}" +
                         "\n\\end{frame}";
        }
Esempio n. 8
0
        // STATUS: this works
        /// <summary> OPTION 3B --> Retrieve FanGraphs hitter leader board for:  RANGE OF SEASON | ALL or AL or NL | players with PLATE APPEARANCES greater than defined # | display in AGGREGATE or by SEASON </summary>
        /// <example> _r.GetFanGraphsHitterLeaderboard(2014, 2017, "all", 200, "aggregate"); </example>
        /// <remarks>
        ///     See: https://billpetti.github.io/baseballr/data-acquisition-functions/
        /// </remarks>
        /// <param name="startYear"> The first year / season you want to get the leaders for </param>
        /// <param name="endYear"> The last year / season you want to get the leaders for </param>
        /// <param name="league">  You can get records for all of MLB ('all'), the National League ('nl'), or the American League ('al') </param>
        /// <param name="minPlateAppearances"> Whether to include only batters that were qualified. Defaults to 'y'. Alternatively, you can pass a minimum number of plate appearances to restrict the data to. </param>
        /// <param name="statDisplayType"> Whether to split the data by batter and individual season, or to simply aggregate by batter across the seasons selected. Defaults to aggregating (ind = 0). To split by season, use ind = 1 </param>
        public void GetFanGraphsHitterLeaderboard(int startYear, int endYear, string league, int minPlateAppearances, string statDisplayType)
        {
            REngine engine = CreateNewREngine();

            ImportBaseballR();
            NumericVector   startYearVector           = CreateNumVect(engine, startYear);
            NumericVector   endYearVector             = CreateNumVect(engine, endYear);
            CharacterVector leagueVector              = CreateCharVect(engine, league);
            NumericVector   minPlateAppearancesVector = CreateNumVect(engine, minPlateAppearances);

            if (string.Equals(statDisplayType, "aggregate", StringComparison.Ordinal))
            {
                const int     aggregateInt      = 0;
                NumericVector statDisplayVector = CreateNumVect(engine, aggregateInt);
                engine.SetSymbol("statDisplayType", statDisplayVector);
            }

            if (string.Equals(statDisplayType, "season", StringComparison.Ordinal))
            {
                const int     aggregateInt      = 1;
                NumericVector statDisplayVector = CreateNumVect(engine, aggregateInt);
                engine.SetSymbol("statDisplayType", statDisplayVector);
            }

            engine.SetSymbol("startYearVector", startYearVector);
            engine.SetSymbol("endYearVector", endYearVector);
            engine.SetSymbol("leagueVector", leagueVector);
            engine.SetSymbol("minPlateAppearancesVector", minPlateAppearancesVector);

            engine.Evaluate("fgHittersLeaderBoard <- fg_bat_leaders(x = startYearVector, y = endYearVector, league = leagueVector, qual = minPlateAppearancesVector, ind = statDisplayType)");
        }
Esempio n. 9
0
        //private void txtboxResults_TextChanged(object sender, EventArgs e)
        //{
        //    if (String.IsNullOrEmpty(txtboxResults.Text))
        //    {
        //        btnClearResults.Enabled = false;
        //    }
        //    else
        //    {
        //        btnClearResults.Enabled = true;
        //    }
        //}

        private void btnSubmit_Click(object sender, EventArgs e)
        {
            try
            {
                SymbolicExpression expression = MyFunctions._engine.Evaluate(txtboxRCommands.Text.Trim());
                if (expression == null)
                {
                    return;
                }

                CharacterVector vector = expression.AsCharacter();

                foreach (var sSubmitThis in vector)
                {
                    //if (sSubmitThis is string)
                    {
                        Console.WriteLine(sSubmitThis);
                    }
                }
            }

            catch
            {
            }

            //catch (Exception ex)
            //{
            //    MessageBox.Show(ex.StackTrace);
            //}
        }
Esempio n. 10
0
        public static List <string> CreateCharacterVar(string svarname, string svalue)
        {
            try
            {
                REngine.SetEnvironmentVariables();
                REngine engine = REngine.GetInstance();

                CharacterVector charVec = engine.CreateCharacter(svalue);
                engine.SetSymbol(svarname, charVec);
                List <string> lerrmsg = new List <string> {
                    "\nCreated R variable named " + svarname
                };
                return(lerrmsg);
            }
            catch (Exception e)
            {
                string errmsg = "\nException encountered while set R variable :" + svarname + "\n";

                errmsg += "\nError message :\n" + e.Message + "\n" + e.StackTrace + "\n";

                if (e.InnerException != null)
                {
                    errmsg += "InnerException\n" + e.InnerException.Message + "\n" + e.InnerException.StackTrace + "\n";
                }
                List <string> lerrmsg = new List <string> {
                    errmsg
                };
                return(lerrmsg);
            }
        }
Esempio n. 11
0
        private List <string> groupSeparation(CharacterVector colNames, List <string> group1, List <string> group2)
        {
            List <string> result = new List <string>();

            for (int i = 0; i < group1.Count; ++i)
            {
                group1[i] = group1[i].Replace('-', '.');
            }
            for (int i = 0; i < group2.Count; ++i)
            {
                group2[i] = group2[i].Replace('-', '.');
            }
            foreach (var name in colNames)
            {
                //Console.WriteLine(name);
                if (group1.Contains(name.ToString()))
                {
                    result.Add("G1");
                }
                else
                {
                    result.Add("G2");
                }
            }
            return(result);
        }
Esempio n. 12
0
        //Method to create DataFrame
        public void createDF()
        {
            PISetup ps = new PISetup();

            Dictionary <DateTime, Object> dict = ps.getArchiveValues();

            Double[] db = new double[dict.Count];
            String[] dt = new String[dict.Count];

            int i = 0;

            foreach (object ob in dict.Values)
            {
                db[i] = Convert.ToDouble(ob);
                i    += 1;
            }

            int j = 0;

            foreach (DateTime da in dict.Keys)
            {
                dt[j] = Convert.ToString(da);
                j    += 1;
            }

            NumericVector   myNum = engine.CreateNumericVector(db);
            CharacterVector myCha = engine.CreateCharacterVector(dt);

            engine.SetSymbol("Time", myCha);
            engine.SetSymbol("BA.TEMP.1", myNum);
            engine.Evaluate("df <- data.frame(Timestamp=c(Time), BA.TEMP.1=c(BA.TEMP.1))");
            //engine.Evaluate("write.csv(df, file = \"C:/File_1.csv\")");
            //engine.Evaluate("View(df)");
        }
Esempio n. 13
0
        internal void RequireLibrary(string libraryName)
        {
            CharacterVector package = engine.CreateCharacter(libraryName);

            engine.SetSymbol("package", package);
            engine.Evaluate("if(libName %in% rownames(installed.packages()))  do.call('library', list(package))  else { install.packages(package) do.call('library', list(package))");
        }
        public async Task <IActionResult> Get()
        {
            //_rEngine.Evaluate("install.packages('forecast', dependencies = TRUE)");
            //_rEngine.Evaluate("install.packages('lmtest', dependencies = TRUE)");
            _rEngine.Evaluate("library(forecast)");
            _rEngine.Evaluate("library(lmtest)");

            string fileName = "myplot.png";

            CharacterVector fileNameVector = _rEngine.CreateCharacterVector(new[] { fileName });

            _rEngine.SetSymbol("fileName", fileNameVector);

            _rEngine.Evaluate("png(filename=fileName, width=6, height=6, units='in', res=100)");

            _rEngine.Evaluate("vector <- as.numeric(AirPassengers)");
            _rEngine.Evaluate("z <- ts(vector, frequency = 12, start = c(1949, 1))");

            _rEngine.Evaluate("z_train <- ts(z[1:100], frequency = 12)");
            _rEngine.Evaluate("z_validate <- ts(z[101:144], frequency = 12)");
            _rEngine.Evaluate("fit <- Arima(y = z_train, order = c(1,1,0), seasonal = c(1,1,0), lambda = TRUE)");
            _rEngine.Evaluate("predition <- forecast(fit, h = 44)");

            //_rEngine.Evaluate("z_train <- ts(z[1:100], frequency = 12");
            _rEngine.Evaluate("plot(predition)"); //plot and save file
            //_rEngine.Evaluate("lines(fit$fitted, col = 'blue')");
            _rEngine.Evaluate("dev.off()");

            Byte[] b = System.IO.File.ReadAllBytes(@"C:\Users\admin\source\repos\DataAnalisysApi\DataAnalisysApi\myplot.png");   // You can use your own method over here.
            return(File(b, "image/jpeg"));
        }
 static void Main(string[] args)
 {
     //intializing
     setPath();
     loadData();
     using (REngine rengine = REngine.GetInstance())
     {
         rengine.Initialize();
         //Importing libraries
         rengine.Evaluate("library(ggplot2)");
         rengine.Evaluate("library(ggthemes)");
         rengine.Evaluate("library(dplyr)");
         //Creating the dataframe
         rengine.Evaluate("df <- setNames(data.frame(matrix(ncol=2, nrow=0)), c(\"year\",\"userCount\"))").AsDataFrame();
         //Storing data from the class object into the dataframe
         for (int i = 0; i < holder.year.Count; i++)
         {
             rengine.Evaluate("df[nrow(df)+1,] <- c(" + holder.year[i] + ", " + holder.userCount[i] + ")");
         }
         //Creating the time series chart
         rengine.Evaluate("chart <- df %>% ggplot(aes(x=year, y=userCount)) + geom_smooth(size=2, aes(colour=\"red\", fill=\"black\"), show.legend=FALSE) + labs(x=\"Year\",y=\"User Count\") + theme_classic()");
         //Saving the graph to a png file
         string          fileName   = "C:/Users/{insert username here}/Desktop/plot0.png";
         CharacterVector fileVector = rengine.CreateCharacterVector(new[] { fileName });
         rengine.SetSymbol("fileName", fileVector);
         rengine.Evaluate("png(filename=fileName, width=6, height=6, units='in',res=100)");
         rengine.Evaluate("print(chart)");
         //Cleaning up
         rengine.Evaluate("dev.off()");
         rengine.Dispose();
     }
 }
Esempio n. 16
0
        private void btnSubmit_Click(object sender, EventArgs e)
        {
            tabControl1.SelectedIndex = 1;  // Sets focus to the log tab
            try
            {
                SymbolicExpression expression = MyFunctions._engine.Evaluate(tbCode.Text.Trim());
                if (expression == null)
                {
                    return;
                }

                CharacterVector vector = expression.AsCharacter();

                foreach (var sSubmitThis in vector)
                {
                    {
                        Console.WriteLine(sSubmitThis);
                        tabControl1.SelectedIndex = 1;
                    }
                }
            }

            catch (Exception ex)
            {
                Console.WriteLine("Problem running your R program: " + ex.Message);
            }
        }
Esempio n. 17
0
        public void Initialize(string[] tickers, string startDate)
        {
            CharacterVector tickerVector = _engine.CreateCharacterVector(tickers);
            CharacterVector dateVector   = _engine.CreateCharacterVector(new[] { startDate });

            var             appendedTickers       = tickers.Select(ticker => $"NASDAQ:{ticker}").ToArray();
            CharacterVector nasdaqCharacterVector = _engine.CreateCharacterVector(appendedTickers);

            _engine.SetSymbol("nasdaqCharacterVector", nasdaqCharacterVector);
            _engine.Evaluate("tickers.temp = spl(nasdaqCharacterVector)");

            _engine.SetSymbol("dateVector", dateVector);

            _engine.SetSymbol("tickerVector", tickerVector);
            _engine.Evaluate("tickers = spl(tickerVector)");

            _engine.Evaluate("data.fund <- new.env()");
            _engine.Evaluate(
                "for (i in 1:len(tickers)) {data.fund[[tickers[i]]] = fund.data(tickers.temp[i], 80, 'annual')};");

            _engine.Evaluate("data <- new.env()");
            _engine.Evaluate("getSymbols(tickers, src = 'yahoo', from = '1970-01-01', env = data, auto.assign = T)");
            _engine.Evaluate("for (i in ls(data)) {data[[i]] = adjustOHLC(data[[i]], use.Adjusted = T)};");


            _engine.Evaluate("portfolioPrices <- NULL");
            _engine.Evaluate("for (Ticker in tickers) {" +
                             $"portfolioPrices <- cbind(portfolioPrices, getSymbols.yahoo(Ticker, from={startDate}, periodicity = \"daily\", auto.assign=FALSE)[,3])" +
                             "}");
        }
        public void test_NextItem_P(int numofItems, ModelNames.Models paramModel, ModelNames.CriterionTypes paramCriterion)
        {
            resultFlag = true;

            REngine.SetEnvironmentVariables();

            REngine engineObj = REngine.GetInstance();

            // Loading a library from R
            engineObj.Evaluate("library(catR)");

            // Polytomous Items
            CharacterVector modelName = engineObj.CreateCharacterVector(new string[] { paramModel.EnumToString() });

            engineObj.SetSymbol("modelName", modelName);
            DataFrame PolyItems = engineObj.Evaluate("PolyItems <- genPolyMatrix(" + numofItems + ", 5, model = modelName, same.nrCat = TRUE)").AsDataFrame();

            engineObj.SetSymbol("PolyItems", PolyItems);

            // Adapting with the existing "CAT-Items" type (Wrapper)
            Console.WriteLine("*******************************************");
            Console.WriteLine("Polytomous Items, Model : " + paramModel.EnumToString());
            Console.WriteLine("*******************************************");

            CATItems itemBank = new CATItems(PolyItems[0].Length, paramModel.EnumToString(), 5);

            Tuple <CATItems.ColumnNames, int>[] cols = itemBank.GetKeys();

            for (int i = 0; i < cols.Length; i++)
            {
                itemBank.SetItemParamter(cols[i], PolyItems[i].Select(y => (double)y).ToArray());
            }

            // Call "NextItem" function from R
            GenericVector r_NextItem = engineObj.Evaluate("r_NextItem <- nextItem(PolyItems, model = modelName, theta = 0, criterion = \"" + paramCriterion.ToString() + "\")").AsList();

            // Selected item
            NumericVector item = r_NextItem[0].AsNumeric();

            DataFrame par = r_NextItem[1].AsDataFrame();

            // Value of "info"
            NumericVector thStart = r_NextItem[2].AsNumeric();

            // Criterion
            CharacterVector startSelect = r_NextItem[3].AsCharacter();

            // Call "NextItem" function from CS
            NextItemModel cs_NextItem = CatRLib.NextItem(itemBank, model: paramModel.EnumToString(), theta: 0, criterion: (int)paramCriterion);

            //Test passed for "MFI"

            if (item[0] != cs_NextItem.item)
            {
                resultFlag = false;
            }

            Assert.IsTrue(resultFlag);
        }
Esempio n. 19
0
        public TSAnalyze ()
            {
            InitializeComponent ();
            // There are several options to initialize thengine, but by default the following suffice:
            REngine engine = REngine.GetInstance();

            //init the R engine            
            REngine.SetEnvironmentVariables ();
            engine = REngine.GetInstance ();
            engine.Initialize ();


            //prepare data
            List<int> size = new List<int>() { 29, 33, 51, 110, 357, 45, 338, 543, 132, 70, 103, 301, 146, 10, 56, 243, 238 };
            List<int> population = new List<int>() { 3162, 11142, 3834, 7305, 81890, 1339, 5414, 65697, 11280, 4589, 320, 60918, 480, 1806, 4267, 63228, 21327 };

            var docPath = Directory.GetCurrentDirectory();
            //var myDir = $@"{docPath}\output";
            var myDir = bingPathToAppDir ("output");

            Directory.CreateDirectory (myDir);

            Console.WriteLine (Directory.Exists (myDir));
            Console.WriteLine (myDir);
            Console.WriteLine (bingPathToAppDir ("output"));

            Console.WriteLine ("my image location {0}", myDir);

            fileName = myDir + "\\myplot.png";

            //calculate
            IntegerVector sizeVector = engine.CreateIntegerVector(size);
            engine.SetSymbol ("size", sizeVector);

            IntegerVector populationVector = engine.CreateIntegerVector(population);
            engine.SetSymbol ("population", populationVector);

            CharacterVector fileNameVector = engine.CreateCharacterVector(new[] { fileName });
            engine.SetSymbol ("fileName", fileNameVector);

            engine.Evaluate ("reg <- lm(population~size)");
            engine.Evaluate ("png(filename=fileName, width=6, height=6, units='in', res=100)");
            engine.Evaluate ("plot(population~size)");
            engine.Evaluate ("abline(reg)");
            engine.Evaluate ("dev.off()");

            //clean up
            engine.Dispose ();

            //output
            Console.WriteLine ("");
            Console.WriteLine ("Press any key to exit");
            Console.ReadKey ();



            }
Esempio n. 20
0
        // GET api/values/5
        public string Get(int id)
        {
            REngine         engine  = REngine.GetInstance();
            CharacterVector charVec = engine.CreateCharacterVector(new[] { "Hello world" });

            engine.SetSymbol("greetings", charVec);
            engine.Evaluate("str(greetings)");
            string[] a = engine.Evaluate("'Hi there .NET, from the R engine'").AsCharacter().ToArray();
            return(a[0]);
        }
Esempio n. 21
0
        public void RTest()
        {
            // A somewhat contrived but customary Hello World:
            CharacterVector charVec = engine.CreateCharacterVector(new[] { "Hello, R world!, .NET speaking" });

            engine.SetSymbol("greetings", charVec);
            engine.Evaluate("str(greetings)"); // print out in the console
            string[] a = engine.Evaluate("'Hi there .NET, from the R engine'").AsCharacter().ToArray();
            Console.WriteLine("R answered: '{0}'", a[0]);
            Console.WriteLine("Press any key to exit the program");
        }
Esempio n. 22
0
        public static void Start(REngine engine)
        {
            Console.WriteLine("\n\nExporting Objects\n\n");
            string RCodeString = string.Empty;

            //R character vector -- R.NET RDotNet.RDotNet.CharacterVector
            Console.WriteLine("\nR character vector\n");
            string[]        myStringArray     = new string[] { "PIDataLink", "PIProcessBook", "PIWebParts" };
            CharacterVector myCharacterVector = engine.CreateCharacterVector(myStringArray.AsEnumerable());

            engine.SetSymbol("mycharvector", myCharacterVector);
            engine.Evaluate("print(mycharvector)");


            //R integer vector -- R.NET RDotNet.NumericVector
            Console.WriteLine("\nR int vector\n");
            int[]         myIntegerArray  = new int[] { 4, 6, 10, 140, 54, 25 };
            IntegerVector myIntegerVector = engine.CreateIntegerVector(myIntegerArray);

            engine.SetSymbol("myintvector", myIntegerVector);
            engine.Evaluate("print(myintvector)");

            //R real vector -- R.NET RDotNet.NumericVector
            Console.WriteLine("\nR real vector\n");
            NumericVector myNumericVector = engine.CreateNumericVector(new double[] { 30.02, 29.99, 30.11, 29.97, 30.01, 29.99 });

            engine.SetSymbol("mynumvector", myNumericVector);
            engine.Evaluate("print(mynumvector)");

            //R complex vector -- R.NET RDotNet.ComplexVector
            Console.WriteLine("\nR complex vector\n");
            Complex[]     myComplexArray  = new Complex[] { Complex.FromPolarCoordinates(10, 0.524), new Complex(12, 6), new Complex(14, 3), (Complex)12.3m, Complex.One + Complex.One };
            ComplexVector myComplexVector = engine.CreateComplexVector(myComplexArray);

            engine.SetSymbol("mycomplexvector", myComplexVector);
            engine.Evaluate("print(mycomplexvector)");


            //R raw vector -- R.NET RDotNet.RawVector
            Console.WriteLine("\nR raw vector\n");
            byte[]    myByteArray = System.Text.Encoding.ASCII.GetBytes("u03a0");
            RawVector myRawVector = engine.CreateRawVector(myByteArray);

            engine.SetSymbol("myrawvector", myRawVector);
            engine.Evaluate("print(myrawvector)");

            //R logical vector -- R.NET RDotNet.LogicalVector
            Console.WriteLine("\nR logical vector\n");
            LogicalVector myLogicalVector = engine.CreateLogicalVector(new Boolean[] { true, false, false, false, true });

            engine.SetSymbol("mylogicalvector", myLogicalVector);
            engine.Evaluate("print(mylogicalvector)");
        }
Esempio n. 23
0
        // STATUS: this works
        /// <summary> Search the Chadwich Bureau Register for a mlb player based on their last name </summary>
        /// <remarks>
        ///     See: https://billpetti.github.io/baseballr/data-acquisition-functions/
        /// </remarks>
        /// <example> _r.SearchForPlayer("Seager"); </example>
        /// <param name="lastName"> Mlb player's last name </param>
        /// <returns> first_name, last_name, given_name, name_suffix, nick_name, birth_year, mlb_played_first, mlbam_id, retrosheet_id, retrosheet_id, bbref_id, fangraphs_id </returns>
        public void SearchForPlayer(string lastName)
        {
            REngine engine = CreateNewREngine();

            ImportBaseballR();

            CharacterVector cvLastName = CreateCharVect(engine, lastName);

            engine.SetSymbol("lastName", cvLastName);

            engine.Evaluate("player <- playerid_lookup(lastName)");
        }
Esempio n. 24
0
        private void a_calistir_Click(object sender, EventArgs e)
        {
            SayfaAdi = sayfaAdiBox.Text;


            if (!check(DosyaYolu) && !check(SayfaAdi))
            {
                yukleme.Visible = true;

                new Thread(() =>
                {
                    //calculate

                    asso_cikis  = a_cikissayfasi.Text;
                    asso_sutun  = Convert.ToInt32(a_sutun.Value);
                    asso_satir  = Convert.ToInt32(a_satir.Value);
                    asso_harici = Convert.ToInt32(a_haricietken.Value);


                    DosyaYolu = DosyaYolu.Replace(@"\", "/");

                    string akod = "using <- function(...) {libs <- unlist(list(...));req <- unlist(lapply(libs,require,character.only=TRUE));need <- libs[req==FALSE];if(length(need)>0){;install.packages(need);lapply(need,require,character.only=TRUE);};};using('forecast', 'openxlsx');Sales <- read.xlsx('" + DosyaYolu + "',sheet='" + SayfaAdi + "');wb <- loadWorkbook('" + DosyaYolu + "');counter <- 1;rowindex <- " + asso_satir + "; colindex <- " + asso_sutun + "; m <- " + asso_harici + "/100; maxid <- length(Sales[,1]);n <- Sales[,1];tSales <- as.data.frame(t(Sales[,-1]));colnames(tSales) <- n;tSales$myfactor <- factor(row.names(tSales));tSales$myfactor <- NULL;tsSales <- ts(tSales);forecastop <- tryCatch({;while(counter <= maxid){;forecast <- as.data.frame(thetaf(tsSales[,counter],level=80,h=1));fc <- forecast[,1];fc[fc < 0] <- 0;fc <- fc+fc*m;forecastvalues <- round(fc,0);writeData(wb,sheet='" + asso_cikis + "',forecastvalues,startRow=rowindex,startCol = colindex);counter <- counter+1;rowindex <- rowindex+1;};print('Forecast values for assortment are generated. Now writing data to Excel file.');},error = function(e){print('Error. Problem in the R code. Check the error message:');stop(e);},warning = function(w){print('Warning. There may be a problem within the data. Check the warning message:');stop(w);});writingop <- tryCatch({saveWorkbook(wb, '" + DosyaYolu + "', overwrite = TRUE);print('Done');},error = function(e){;print('Error. Please check the error message:');stop(e);},warning = function(w){;stop('Access denied. Make sure that the Excel file is closed and not protected.');});openXL('" + DosyaYolu + "');print('Done')";


                    try
                    {
                        CharacterVector vector = engine.Evaluate(akod).AsCharacter();
                        result = vector[0];

                        if (result == "Done")
                        {
                            MessageBox.Show("İşlem başarıyla tamamlandı");
                        }
                        else
                        {
                            MessageBox.Show(result);
                        }
                    }
                    catch (RDotNet.EvaluationException a)
                    {
                        MessageBox.Show(" " + a);
                    }

                    yukleme.Visible = false;
                    //clean up
                    //engine.Dispose();
                }).Start();
            }
            else
            {
                MessageBox.Show("Dosya yolu veya sayfa adı girilmedi !" + check(DosyaYolu) + " - " + check(SayfaAdi));
            }
        }
Esempio n. 25
0
        // moved to LahmanPlayerInfoController
        // STATUS: this works
        // <summary> Get Mlb player's Player Id, First Name, Last Name</summary>
        // <reference> http://lahman.r-forge.r-project.org/doc/ </reference>
        // public void GetLahmanPlayerInfo(string lastName)
        // {
        //     // for testing
        //     // string mookieBettsId = "bettsmo01";

        //     REngine engine = CreateNewREngine();
        //     engine.Evaluate("library(Lahman)");

        //     CharacterVector lastNameVector = CreateCharVect(engine, lastName);
        //     engine.SetSymbol("lastNameVector", lastNameVector);

        //     // CharacterVector playerIdVector = CreateCharVect(engine, mookieBettsId);
        //     // engine.SetSymbol("playerIdVector", playerIdVector);

        //     engine.Evaluate("playerInfo(lastNameVector)");
        // }


        public void GetLahmanTeamInfo(string lastName)
        {
            REngine engine = CreateNewREngine();

            engine.Evaluate("library(Lahman)");

            CharacterVector lastNameVector = CreateCharVect(engine, lastName);

            engine.SetSymbol("lastNameVector", lastNameVector);

            engine.Evaluate("teamInfo('CH', extra='park')");
            // engine.Evaluate("playerInfo(lastNameVector)");
        }
Esempio n. 26
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());
        }
Esempio n. 27
0
 public string run_ruvseq(List <string> group1, List <string> group2)
 {
     try
     {
         engine = REngine.GetInstance();
         engine.Initialize();
         engine.Evaluate(string.Format("Sys.setenv(PATH = paste('{0}', ';', Sys.getenv('PATH'), sep=''))", this.rPath));
         engine.Evaluate("Sys.getenv()");
         engine.Evaluate("library('RUVSeq')");
         engine.Evaluate("library('DESeq2')");
         engine.Evaluate("library('RColorBrewer')");
         engine.Evaluate("matrix <- read.table('" + inputFile + "', header=TRUE, sep=',', fill=TRUE, row.names=1)");
         engine.Evaluate("matrix <- matrix + 1;" +
                         "matrix <- round(matrix, 0);" +
                         "filter <- apply(matrix, 1, function(x) length(x[x > 5]) >= 2);" +
                         "filtered <- matrix[filter,];" +
                         "genes <- rownames(filtered)[grep('^ENS', rownames(filtered))];" +
                         "spikes <- rownames(filtered)[grep('^ERCC', rownames(filtered))];");
         CharacterVector colnames = engine.Evaluate("colnames(filtered)").AsCharacter();
         var             x        = engine.CreateCharacterVector(this.groupSeparation(colnames, group1, group2));
         engine.SetSymbol("x", x);
         engine.Evaluate("print(x)");
         engine.Evaluate("print(colnames(filtered))");
         engine.Evaluate("colors <- brewer.pal(4, 'Set1');" +
                         "set <- newSeqExpressionSet(as.matrix(filtered), phenoData = data.frame(x, row.names=colnames(filtered)));" +
                         "set <- betweenLaneNormalization(set, which='upper');" +
                         "set1 <- RUVg(set, spikes, k=1);" +
                         "write.csv(normCounts(set1), paste('" + outputFileDirectory + "\\\\" + outputFile + "','_normalizedCounts.csv', sep=''));" +
                         "write.csv(counts(set1), paste('" + outputFileDirectory + "\\\\" + outputFile + "', '_counts.csv', sep = ''));" +
                         "write.csv(pData(set1), paste('" + outputFileDirectory + "\\\\" + outputFile + "','_colData.csv', sep = ''));");
         engine.Evaluate(@"png(file = paste('" + outputFileDirectory + "\\\\" + outputFile + "','_graphRLE_RUV.png', sep = ''), height = 720, width = 1280);" +
                         "plotRLE(set1, outline = FALSE, ylim = c(-4, 4), col = colors[x], xaxt = 'n', ann = FALSE);" +
                         "text(x = seq(1, length(colnames(filtered))) - .2, par('usr')[3] - .4, labels = colnames(filtered), adj = c(1.5, 1.5), srt = 60, pos = 1, xpd = TRUE, cex = 1);" +
                         "axis(1, at = seq(1, length(colnames(filtered)), by = 1), labels = FALSE);" +
                         "dev.off();");
         engine.Evaluate("png(file = paste('" + outputFileDirectory + "\\\\" + outputFile + "', '_graphPCA_RUV.png', sep = '), height = 720, width = 1280);" +
                         "plotPCA(set1, col = colors[x], cex = 1.2);" +
                         "dev.off();");
         return("Success");
     }
     catch (RDotNet.EvaluationException e)
     {
         return(e.ToString());
     }
     finally
     {
         engine.Evaluate("rm(list = ls())");
         engine.Evaluate(@"detach(); detach(); detach();");
     }
 }
Esempio n. 28
0
        private float CalculateLeveneValue(LeveneTestDTO leveneTestDTO)
        {
            CharacterVector namesV  = leveneTestDTO.Names;
            NumericVector   valuesV = leveneTestDTO.Values;

            _engine.Evaluate("library(car)");
            _engine.SetSymbol("namesV", namesV);
            _engine.SetSymbol("valuesV", valuesV);

            GenericVector testResult = _engine.Evaluate("levene.test(valuesV, namesV, center=mean)").AsList();
            float         p          = (float)testResult[2].AsNumeric().First();

            return(p);
        }
Esempio n. 29
0
        // TO-DO: continue working through available functions within the PitchRx package
        #region  PITCH RX ------------------------------------------------------------

        // STATUS: this works to a point, returns a lot of stuff but then breaks; seems to be an issue with some of the data being returned
        // TO-DO: test this with more dates to figure out why it breaks; figure out of if there are more things returned if it doesnt' break
        /// <summary> Scrapes and returns a significant amount of data about each individual at bat within a given date range </summary>
        /// <example> _r.GetPitchRxData("2013-06-01", "2013-06-01"); </example>
        /// <param name="startDate"> First date of the range you are looking for (e.g, "2016-04-06") </param>
        /// <param name="endDate"> Last date of the range you are looking for (e.g, "2016-06-21") </param>
        /// <returns>
        ///     <list>
        ///         <item> AT BAT: pitcher (id), batter (id), num (pitch number?), b, s, o, start_tfs, start_tfs_zulu, stand, b_height, p_throws, atbat_des, home_team_runs, away_team_runs, url (for XML), inning_side(top OR bottom), inning, next_, event2, batter_name, pitcher_name, gameday_link, date </item>
        ///         <item> ACTION: b, s, o, des, event, tfs_zulu, player (id), pitch (number), event_num, home_team_runs, away_team_runs, url (for XML), inning_side (top OR bottom), inning, next_, num, score, event2, gameday_link </item>
        ///         <item> PITCH: des, id, type (B, S, X), tfs, tfs_zulu, x, y, event_num, sv_id, play_guid, start_speed, end_speed, sz_top, sz_top, pfx_x, pfx_z, px, pz, x0, y0, z0, vx0, vy0, vz0, ax, ay, az, break_y </item>
        ///     </list>
        /// </returns>
        /// <reference> https://pitchrx.cpsievert.me </reference>
        public void GetPitchRxData(string startDate, string endDate)
        {
            REngine engine = CreateNewREngine();

            ImportPitchRx();

            CharacterVector startDateVector = CreateCharVect(engine, startDate);
            CharacterVector endDateVector   = CreateCharVect(engine, endDate);

            engine.SetSymbol("startDateVector", startDateVector);
            engine.SetSymbol("endDateVector", endDateVector);

            engine.Evaluate("dat <- scrape(start = startDateVector, end = endDateVector)");
        }
Esempio n. 30
0
        // STATUS: this works
        /// <summary>
        ///     OPTION 1A --> Retrieve FanGraphs hitter leader board for:  SINGLE SEASON | ALL MLB | QUALIFIED or UNQUALIFIED
        /// </summary>
        /// <remarks>
        ///     See: https://billpetti.github.io/baseballr/data-acquisition-functions/
        /// </remarks>
        /// <example> _r.GetFanGraphsHitterLeaderboard(2017, "y");
        /// </example>
        /// <param name="year">
        ///     The year of the season you want to get the leaders for
        /// </param>
        /// <param name="qual">
        ///     Whether to include only batters that were qualified. Defaults to 'y'. Alternatively, you can pass a minimum number of plate appearances to restrict the data to.
        /// </param>
        public void GetFanGraphsHitterLeaderboard(int year, string qual)
        {
            REngine engine = CreateNewREngine();

            ImportBaseballR();

            NumericVector   yearVector       = CreateNumVect(engine, year);
            CharacterVector qualifyingVector = CreateCharVect(engine, qual);

            engine.SetSymbol("yearVector", yearVector);
            engine.SetSymbol("qualifyingVector", qualifyingVector);

            engine.Evaluate("fgHittersLeaderBoard <- fg_bat_leaders(x = yearVector, y = yearVector, league = 'all', qual = qualifyingVector, ind = 0)");
        }
Esempio n. 31
0
        private void button1_Click(object sender, EventArgs e)
        {
            REngine.SetEnvironmentVariables(); // <-- May be omitted; the next line would call it.
            REngine engine = REngine.GetInstance();
            // A somewhat contrived but customary Hello World:
            CharacterVector charVec = engine.CreateCharacterVector(new[] { "Hello, R world!, .NET speaking" });

            engine.SetSymbol("greetings", charVec);
            engine.Evaluate("str(greetings)"); // print out in the console
            string[] a = engine.Evaluate("'Hi there .NET, from the R engine'").AsCharacter().ToArray();
            Console.WriteLine("R answered: '{0}'", a[0]);
            Console.WriteLine("Press any key to exit the program");
            engine.Dispose();
        }
Esempio n. 32
0
 /// <summary>
 /// Gets the symbol names defined in this environment.
 /// </summary>
 /// <param name="all">Including special functions or not.</param>
 /// <returns>Symbol names.</returns>
 public string[] GetSymbolNames(bool all = false)
 {
     var symbolNames = new CharacterVector(Engine, this.GetFunction<R_lsInternal>()(handle, all));
     int length = symbolNames.Length;
     var copy = new string[length];
     symbolNames.CopyTo(copy, length);
     return copy;
 }
 public PlotWindowViewModel(REngine engine)
 {
     _engine = engine;
     _response = _engine.Evaluate("require(quantmod)").AsCharacter();      // load quantmod
 }