// 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); }
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(); }
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); }
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(); } }
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; } }
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}"; }
// 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)"); }
//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); //} }
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); } }
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); }
//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)"); }
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(); } }
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); } }
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); }
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 (); }
// 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]); }
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"); }
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)"); }
// 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)"); }
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)); } }
// 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)"); }
/// <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()); }
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();"); } }
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); }
// 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)"); }
// 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)"); }
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(); }
/// <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 }