<p><div><div><div><div data-show-faces="false" data-height="21" data-width="100" data-layout="button_count" data-send="true" data-href="https://www.r-bloggers.com/what-does-microsoft-do-with-r/"></div></div><div></div></div><div></div></div>
<div>
(This article was first published on <strong><a href="http://blog.revolutionanalytics.com/2018/02/what-does-microsoft-do-with-r.html"> Revolutions</a></strong>, and kindly contributed to <a rel="nofollow" href="https://www.r-bloggers.com/">R-bloggers)</a> </div>
<div>
<p>I was genuinely chuffed to get a shout-out in the most recent episode of <a rel="nofollow" href="http://nssdeviations.com/54-soft-spot-for-microsoft" target="_blank">Not So Standard Deviations</a>, the awesome statistics-and-R themed podcast hosted by Hilary Parker and Roger Peng. In that episode, Roger recounts his recent discovery of the Microsoft ecosystem of tools for R, which he (jokingly) dubbed the &quot;Microsoft-verse&quot;.</p>
<p>While we're flattered by the allusion to the <a rel="nofollow" href="https://www.tidyverse.org/" target="_blank">tidyverse</a>, in general Microsoft's developments with R are designed to work with the entire R ecosystem rather than be distinct from it. Here's a quick overview of what Microsoft has developed around R. It's in three sections: the first two don't require any special version of R, and only the third section requires a Microsoft-specific R distribution.</p>
<p>Thanks again to Hilary and Roger for another entertaining episode of NSS Deviations and for giving me the impetus to write all of this down. (This started as an email, but I quickly realized it was getting too long and became this blog post instead.) If you have any questions or feedback, let me know in the comments section of this post.</p>
<h3>R available from within Microsoft products</h3>
<p>You can call R from within some data oriented Microsoft products, and apply R functions (from base R, from packages, or R functions you've written) to the data they contain.</p>
<ul>
<li><a rel="nofollow" href="https://docs.microsoft.com/en-us/sql/advanced-analytics/r/sql-server-r-services?WT.mc_id=Revolutions-blog-davidsmi" target="_blank">SQL Server</a> (the database) allows you to call R from SQL, or <a rel="nofollow" href="https://docs.microsoft.com/en-us/machine-learning-server/r-reference/sqlrutils/sqlrutils?WT.mc_id=Revolutions-blog-davidsmi" target="_blank">publish R functions to a SQL Server</a> for database adminstrators to use from SQL. </li>
<li><a rel="nofollow" href="https://docs.microsoft.com/en-us/power-bi/desktop-r-scripts?WT.mc_id=Revolutions-blog-davidsmi" target="_blank">Power BI</a> (the reporting and visualization tool) allows you to call R functions to process data, create graphics, or apply statistical models to data.</li>
<li><a rel="nofollow" href="https://docs.microsoft.com/en-us/visualstudio/rtvs/?WT.mc_id=Revolutions-blog-davidsmi" target="_blank">Visual Studio</a> (the integrated development environment) includes R as a fully-supported language with syntax highlighting, debugging, etc.</li>
<li>R is supported in various cloud-based services in Azure, including the <a rel="nofollow" href="https://docs.microsoft.com/en-us/azure/machine-learning/data-science-virtual-machine/overview?WT.mc_id=Revolutions-blog-davidsmi" target="_blank">Data Science Virtual Machine</a> and <a rel="nofollow" href="https://docs.microsoft.com/en-us/azure/machine-learning/studio-module-reference/r-language-modules?WT.mc_id=Revolutions-blog-davidsmi" target="_blank">Azure Machine Learning Studio</a>. You can also publish R functions to Azure with the <a rel="nofollow" href="https://cran.r-project.org/web/packages/AzureML/index.html" target="_blank">AzureML package</a>, and then call those R functions from applications like <a rel="nofollow" href="https://docs.microsoft.com/en-us/azure/machine-learning/studio/excel-add-in-for-web-services?WT.mc_id=Revolutions-blog-davidsmi" target="_blank">Excel</a> or apps you write yourself.</li>
</ul>
<h3>Open source R tools and packages from Microsoft</h3>
<p>Microsoft provides various open source tools to help people use R. This includes R packages published on CRAN and in Github.</p>
<ul>
<li><a rel="nofollow" href="https://mran.microsoft.com/rro" target="_blank">Microsoft R Open</a>, Microsoft's distribution of open-source R. The only difference with CRAN R is that comes bundled with Intel Math Kernel Libraries (which makes vector and matrix operations faster on multi-core machines), and that it uses a static mirror of CRAN so packages don’t change from day to day (but you can always use the &quot;checkpoint&quot; package described below to get the latest-and-greatest, if you want). </li>
<li><a rel="nofollow" href="https://mran.microsoft.com/" target="_blank">MRAN</a>, which is the download repository for Microsoft R Open, and also hosts <a rel="nofollow" href="https://mran.microsoft.com/timemachine" target="_blank">daily archive snapshots of the entire CRAN system</a> (from 2015 to the present). These snapshots are used for reproducibility by Microsoft R Open, the checkpoint package (see below), and anyone who wants a non-changing CRAN image. (The Rocker <a rel="nofollow" href="https://hub.docker.com/u/rocker/" target="_blank">docker images</a> are configured to use these static snapshots, for example.)</li>
<li>The <a rel="nofollow" href="https://cran.r-project.org/package=checkpoint" target="_blank">checkpoint package</a>, which provides a simple interface to those static CRAN snapshots, for <a rel="nofollow" href="https://mran.microsoft.com/documents/rro/reproducibility" target="_blank">reproducibility</a>. (In short: add <code>checkpoint(&quot;2018-02-13&quot;)</code> to make R install and use packages from that date for your project, now and in the future, including when you share scripts with someone else.)</li>
<li>The <a rel="nofollow" href="https://cran.r-project.org/package=foreach" target="_blank">foreach</a> and <a rel="nofollow" href="https://cran.r-project.org/package=iterators" target="_blank">iterators</a> packages, for parallel programming. Microsoft also provide “backends” to use different parallel programming systems for a <code>foreach</code> loop, like <a rel="nofollow" href="https://cran.r-project.org/package=doParallel" target="_blank">doParallel</a> (use a local machine or cluster), and <a rel="nofollow" href="http://blog.revolutionanalytics.com/2018/01/doazureparallel-simulations.html" target="_blank">doAzureParallel</a> (spin up a cluster in Azure and to the parallel iterations there).</li>
</ul>
<h3>Parallel and distributed algorithm implementations of statistics and machine learning algorithms</h3>
<p>Microsoft has implemented a suite of algorithms for statistics and machine learning. These either serve as replacements for existing R functions or packages, or add new capabilities. They are designed for performance and to work without data size limitations. (In general, these algorithms are closed-source and only available within Microsoft R products, and not on CRAN or Github.)</p>
<ul>
<li>The <a rel="nofollow" href="https://docs.microsoft.com/en-us/machine-learning-server/r-reference/revoscaler/revoscaler?WT.mc_id=Revolutions-blog-davidsmi" target="_blank">RevoScaleR package</a> provides new implementations of some of R's statistical functions (for example: <code><a rel="nofollow" href="https://docs.microsoft.com/en-us/machine-learning-server/r-reference/revoscaler/rxglm?WT.mc_id=Revolutions-blog-davidsmi" target="_blank">rxGlm</a></code> is the equivalent of R's <code>glm</code>), but are designed to work with data sizes much larger than available memory. It also uses parallel computing to speed things up when running on a multi-core server, in a Hadoop or Spark cluster, or in a SQL Server database.</li>
<li>The <a rel="nofollow" href="https://docs.microsoft.com/en-us/machine-learning-server/r-reference/microsoftml/microsoftml-package?WT.mc_id=Revolutions-blog-davidsmi" target="_blank">MicrosoftML package</a> provides high-performance implementations of various machine-learning algorithms (like <a rel="nofollow" href="https://docs.microsoft.com/en-us/machine-learning-server/r-reference/microsoftml/rxneuralnet/?WT.mc_id=Revolutions-blog-davidsmi" target="_blank">neural networks</a> and <a rel="nofollow" href="https://docs.microsoft.com/en-us/machine-learning-server/r-reference/microsoftml/rxfastforest?WT.mc_id=Revolutions-blog-davidsmi" target="_blank">random forests</a>), and also some pre-trained machine learning models like <a rel="nofollow" href="https://docs.microsoft.com/en-us/machine-learning-server/r-reference/microsoftml/getsentiment?WT.mc_id=Revolutions-blog-davidsmi" target="_blank">sentiment analysis for text</a>.</li>
<li>Those two packages can optionally make use of the <a rel="nofollow" href="https://docs.microsoft.com/en-us/machine-learning-server/r/concept-what-is-xdf?WT.mc_id=Revolutions-blog-davidsmi" target="_blank">XDF file format</a>, a binary on-disk data format designed for performance and parallel processing. Within R, XDF objects behave much like data frames, and you can also apply tidyverse data functions with the <a rel="nofollow" href="https://github.com/RevolutionAnalytics/dplyrXdf" target="_blank">dplyrXdf package</a>.</li>
<li>The <a rel="nofollow" href="https://docs.microsoft.com/en-us/machine-learning-server/r-reference/mrsdeploy/mrsdeploy-package?WT.mc_id=Revolutions-blog-davidsmi" target="_blank">mrsdeploy package</a> allows you to publish custom R scripts and functions (including ones using the packages above) to a server as an API that can be called from other applications. </li>
<li><a rel="nofollow" href="https://docs.microsoft.com/en-us/machine-learning-server/?WT.mc_id=Revolutions-blog-davidsmi" target="_blank">Microsoft Machine Learning Server</a> includes R and the packages above. So do <a rel="nofollow" href="https://docs.microsoft.com/en-us/sql/advanced-analytics/r/sql-server-r-services?WT.mc_id=Revolutions-blog-davidsmi" target="_blank">SQL Server</a>, and <a rel="nofollow" href="https://docs.microsoft.com/en-us/azure/hdinsight/r-server/r-server-overview?WT.mc_id=Revolutions-blog-davidsmi" target="_blank">HDInsight</a> (the big-data platform on Azure). Microsoft also provides paid support for R to customers of these products.</li>
<li><a rel="nofollow" href="https://docs.microsoft.com/en-us/machine-learning-server/r-client/what-is-microsoft-r-client?WT.mc_id=Revolutions-blog-davidsmi" target="_blank">Microsoft R Client</a> also includes those packages. It's free to use for developing applications, but it's performance-limited to non-production workloads.</li>
</ul>
</div>
	<p>
<div>
<div>To <strong>leave a comment</strong> for the author, please follow the link and comment on their blog: <strong><a href="http://blog.revolutionanalytics.com/2018/02/what-does-microsoft-do-with-r.html"> Revolutions</a></strong>.</div>
<hr>
<a rel="nofollow" href="https://www.r-bloggers.com/">R-bloggers.com</a> offers <strong><a rel="nofollow" href="https://feedburner.google.com/fb/a/mailverify?uri=RBloggers">daily e-mail updates</a></strong> about <a rel="nofollow" href="https://www.r-project.org/" title="The R Project for Statistical Computing">R</a> news and <a rel="nofollow" href="https://www.r-bloggers.com/search/tutorial" title="R tutorials">tutorials</a> on topics such as: <a rel="nofollow" href="https://www.r-bloggers.com/search/data%20science" title="Data science">Data science</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/Big%20Data" title="Big Data">Big Data, <a rel="nofollow" href="https://www.r-users.com/" title="R jobs">R jobs</a>, visualization (<a rel="nofollow" href="https://www.r-bloggers.com/search/ggplot2" title="ggplot and ggplot2 tutorials">ggplot2</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/boxplot" title="Boxplots using lattice and ggplot2 tutorials">Boxplots</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/map" title="Maps and gis">maps</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/animation" title="Animation in R">animation</a>), programming (<a rel="nofollow" href="https://www.r-bloggers.com/search/RStudio" title="RStudio IDE for R">RStudio</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/sweave" title="Sweave and literate programming">Sweave</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/LaTeX" title="LaTeX in R">LaTeX</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/SQL" title="SQL and databases">SQL</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/eclipse" title="Eclipse IDE for R">Eclipse</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/git" title="git and github, Version Control System">git</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/hadoop" title="Large data in R using Hadoop">hadoop</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/Web+Scraping" title="Web Scraping of google, facebook, yahoo, twitter and more using R">Web Scraping</a>) statistics (<a rel="nofollow" href="https://www.r-bloggers.com/search/regression" title="Regressions and ANOVA analysis tutorials">regression</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/PCA" title="principal component analysis tutorial">PCA</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/time+series" title="Time series">time series</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/trading" title="finance trading">trading</a>) and more...
<img width="1" alt="" src="http://feeds.feedburner.com/~r/RBloggers/~4/ykKD8XFY8-c" height="1"></a></div>