<p><div><div><div><div data-width="100" data-show-faces="false" data-send="true" data-layout="button_count" data-height="21" data-href="http://www.r-bloggers.com/combine-arcgis-and-r-clustering-toolbox/"></div></div><div><a data-url="http://www.r-bloggers.com/combine-arcgis-and-r-clustering-toolbox/" data-counturl="http://www.r-bloggers.com/combine-arcgis-and-r-clustering-toolbox/" data-count="horizontal" data-text="Combine ArcGIS and R – Clustering Toolbox" class="twitter-share-button" data-via="rbloggers" href="https://twitter.com/share"></a></div><div></div></div><div></div></div>
<div>
(This article was first published on <strong><a href="http://r-video-tutorial.blogspot.com/2016/07/combine-arcgis-and-r-clustering-toolbox.html"> R tutorial for Spatial Statistics</a></strong>, and kindly contributed to <a rel="nofollow" href="http://www.r-bloggers.com/">R-bloggers)</a> </div>
<p>Last year at the ESRI User Conference in San Diego, there was an announcement of an initiative to bridge ArcGIS and R. This became reality I think early this year with<a target="_blank" href="https://r-arcgis.github.io/"> R-Bridge</a>.<br>Basically, ESRI has created an R library that is able to communicate and exchange data between ArcGIS and R, so that we can create ArcGIS toolboxes using R scripts.</p>
<p>I am particularly interested in this application because R has become quite powerful for spatial data analysis in the last few years. However, I have the impression that within the geography community, R is still considered a bit of an outsider. This is because the main GIS application, i.e. ArcGIS, is based on Python and therefore courses in departments of geography and geomatics tend to focus on teaching Python, neglecting R. This I think is a mistake, since R in my opinion is easier to learn for people without a background in computer science, and has very powerful libraries for spatio-temporal data analysis.<br>For these reasons, the creation of the R-Bridge is particularly welcomed from my side because it will allow me to teach students how to create powerful new Toolboxes for ArcGIS based on scripts created in R. For example, this Autumn semester we will implement in the course of GIS III a module about geo-sensors, and then I will teach spatio-temporal data analysis using R within ArcGIS. This way students will learn the power of R starting from the familiar environment and user interface of ArcGIS.<br>Since I never worked with R-Bridge before, Today I started doing some testing and I decided that the best way to learn it was to create a simple Toolbox to do K-Means clustering on point shapefiles, which I think is a function not available in ArcGIS. In this post I will describe in details how to create the Toolbox and the R Script to perform the analysis.</p>
<p><span>R-Bridge Installation</span><br>Installing R-Bridge is extremely simple. TYou only need a recent  version of R (I have the 3.0.0) installed on your PC (32-bit or 64-bit, consistent with the version of ArcGIS you have installed) and ArcGIS 10.3.1 or more recent.<br>At this point you can download the installation files from the R-Bridge GitHub page: <a target="_blank" href="https://github.com/R-ArcGIS/r-bridge-install">https://github.com/R-ArcGIS/r-bridge-install</a><br>You can unzip its content anywhere on your PC. At this point you need to run ArcGIS as aministrator (this is very important!!), and then in the ArcCatalog navigate to the folder where you unzip the zip you just downloaded.</p>
<div><a target="_blank" href="http://i1.wp.com/3.bp.blogspot.com/-2RT15qnYW98/V3ZWoSqZqrI/AAAAAAAAR8Q/ah0pkt9c9VQSwwpxNPRrmFCJZUG-HZxzgCLcB/s1600/Install_Fig1.jpg?ssl=1"><img src="http://i1.wp.com/3.bp.blogspot.com/-2RT15qnYW98/V3ZWoSqZqrI/AAAAAAAAR8Q/ah0pkt9c9VQSwwpxNPRrmFCJZUG-HZxzgCLcB/s1600/Install_Fig1.jpg?w=456&ssl=1" border="0" data-recalc-dims="1"></a></div>
<p>Now you just need to run the script “Install R Bindings” and ArcGIS will take care of the rest. I found the process extremely easy!!</p>
<p><span>Getting Started</span><br>ESRI created two examples to help us get started with the development of packages for ArcGIS written in the R language. You can find it here: <a target="_blank" href="https://github.com/R-ArcGIS/r-sample-tools">https://github.com/R-ArcGIS/r-sample-tools</a><br>When you unzip this you will find a folder named “Scripts” where you can find R scripts optimized for the use in ArcGIS. I started from these to learn how to create scripts that work.</p>
<p><span>Clustering Example – R Script</span><br>As I said, ESRI created a specific library for R to be able to communicate back and forth with ArcGIS: it is called “arcbinding” and it is installed during the installation process we completed before. This library has a series of functions that allow the R script to be run starting from the ArcGIS console and its GUI. For this reason the R script is a bit different compared to the one you would do to reach the same result outside of ArcGIS. Probably it is better if I just start including some code so that you can better understand.<br>Below is the full R script I used for this example:</p>
<div>
<div>
<pre><span>### KMeans Clustering Toolbox</span><br><span>##Author: Fabio Veronesi</span><br>tool_exec &lt;- <a target="_blank" href="http://inside-r.org/r-doc/base/function"><span>function</span></a><span>(</span>in_params<span>,</span> out_params<span>)</span><br><span>{</span><br>  <span>if</span> <span>(</span>!requireNamespace<span>(</span><span>&quot;sp&quot;</span><span>,</span> quietly = <span>TRUE</span><span>)</span><span>)</span><br>    <a target="_blank" href="http://inside-r.org/r-doc/utils/install.packages"><span>install.packages</span></a><span>(</span><span>&quot;sp&quot;</span><span>)</span><br>  <a target="_blank" href="http://inside-r.org/r-doc/base/require"><span>require</span></a><span>(</span><a target="_blank" href="http://inside-r.org/packages/cran/sp">sp</a><span>)</span><br> <br>  <a target="_blank" href="http://inside-r.org/r-doc/base/print"><span>print</span></a><span>(</span><span>&quot;K-Means Clustering of Shapefiles&quot;</span><span>)</span><br>  <a target="_blank" href="http://inside-r.org/r-doc/base/print"><span>print</span></a><span>(</span><span>&quot;Author: Fabio Veronesi&quot;</span><span>)</span><br> <br>  source_dataset = in_params<span>[</span><span>[</span><span>1</span><span>]</span><span>]</span><br>  nclust = in_params<span>[</span><span>[</span><span>2</span><span>]</span><span>]</span><br>  variable = in_params<span>[</span><span>[</span><span>3</span><span>]</span><span>]</span><br> <br>  out_shape = out_params<span>[</span><span>[</span><span>1</span><span>]</span><span>]</span><br> <br>  <span>### Read Data</span><br>  arc.progress_label<span>(</span><span>&quot;Loading Dataset&quot;</span><span>)</span><br>  d &lt;- arc.open<span>(</span>source_dataset<span>)</span><br> <br> <br>  <span>### Create a Data.Frame with the variables to cluster</span><br>  <a target="_blank" href="http://inside-r.org/r-doc/utils/data"><span>data</span></a> &lt;- arc.select<span>(</span>d<span>,</span> variable<span>)</span><br>  data_clust &lt;- <a target="_blank" href="http://inside-r.org/r-doc/base/data.frame"><span>data.frame</span></a><span>(</span><a target="_blank" href="http://inside-r.org/r-doc/utils/data"><span>data</span></a><span>[</span><span>,</span>variable<span>[</span><span>1</span><span>]</span><span>]</span><span>)</span><br> <br> <br>  <span>if</span><span>(</span><a target="_blank" href="http://inside-r.org/r-doc/base/length"><span>length</span></a><span>(</span>variable<span>)</span>><span>1</span><span>)</span><span>{</span><br> <span>for</span><span>(</span>i <span>in</span> <span>2</span>:<a target="_blank" href="http://inside-r.org/r-doc/base/length"><span>length</span></a><span>(</span>variable<span>)</span><span>)</span><span>{</span><br>  data_clust &lt;- <a target="_blank" href="http://inside-r.org/r-doc/base/cbind"><span>cbind</span></a><span>(</span>data_clust<span>,</span><a target="_blank" href="http://inside-r.org/r-doc/utils/data"><span>data</span></a><span>[</span><span>,</span>variable<span>[</span>i<span>]</span><span>]</span><span>)</span><br> <span>}</span><br>  <span>}</span><br> <br>  <a target="_blank" href="http://inside-r.org/r-doc/base/names"><span>names</span></a><span>(</span>data_clust<span>)</span> &lt;- variable<br> <br>  <span>for</span><span>(</span>i <span>in</span> <span>1</span>:<a target="_blank" href="http://inside-r.org/r-doc/base/length"><span>length</span></a><span>(</span>variable<span>)</span><span>)</span><span>{</span><br> <a target="_blank" href="http://inside-r.org/r-doc/grDevices/dev.new"><span>dev.new</span></a><span>(</span><span>)</span><br> <a target="_blank" href="http://inside-r.org/r-doc/graphics/plot"><span>plot</span></a><span>(</span><a target="_blank" href="http://inside-r.org/r-doc/graphics/hist"><span>hist</span></a><span>(</span>data_clust<span>[</span><span>,</span>i<span>]</span><span>)</span><span>,</span>main=paste0<span>(</span><span>&quot;Histogram of &quot;</span><span>,</span>variable<span>[</span>i<span>]</span><span>)</span><span>,</span>xlab=variable<span>[</span>i<span>]</span><span>)</span><br>  <span>}</span><br> <br>  clusters &lt;- <a target="_blank" href="http://inside-r.org/r-doc/stats/kmeans"><span>kmeans</span></a><span>(</span>data_clust<span>,</span> nclust<span>)</span><br> <br>  result &lt;- <a target="_blank" href="http://inside-r.org/r-doc/base/data.frame"><span>data.frame</span></a><span>(</span><a target="_blank" href="http://inside-r.org/r-doc/survival/cluster">cluster</a>=clusters$cluster<span>)</span><br> <br>  arc.write<span>(</span>out_shape<span>,</span> result<span>,</span> coords = arc.shape<span>(</span><a target="_blank" href="http://inside-r.org/r-doc/utils/data"><span>data</span></a><span>)</span><span>)</span><br> <br>  <a target="_blank" href="http://inside-r.org/r-doc/base/print"><span>print</span></a><span>(</span><span>&quot;Done!!&quot;</span><span>)</span><br>  <a target="_blank" href="http://inside-r.org/r-doc/base/return"><span>return</span></a><span>(</span>out_params<span>)</span><br><span>}</span></pre>
</div>
</div>
<p><a title="Created by Pretty R at inside-R.org" target="_blank" href="http://www.inside-r.org/pretty-r">Created by Pretty R at inside-R.org</a></p>
<p>As you can see, the whole script is wrapped in a function called <code>tool_exec</code> with two arguments <code>in_params</code> and <code>out_params</code>. These are the list of input and output parameters that will be passed to R from ArcGIS.<br>The next three lines are taken directly from the script that ESRI provides. Basically, if the user does not have the package <code>sp</code> installed, R will download, install and load it. You can copy and paste these lines if you need other packages installed on the user’s machine to perform your analysis. In this case I am only using the function <code>kmeans</code>, available in the package <code>stats</code>, which is loaded by default in R.<br>At this point I inserted two <code>print</code> calls with the title and my name on them. This has no real purpose except to let you know that you can <code>print</code> information from R directly onto the dialog in ArcGIS with simple <code>print</code> calls. We will see at the end how they look.<br>Now we need to create an object for each input and output parameter you need. We will need to specify these in ArcGIS once we create the Toolbox. Since I want to cluster a shapefile, the first input parameter will be this object. Then I want the user to select the number of clusters, so I will create another option for this. Then I would like the user to be able to select the variables s/he wants to use for clustering, so I will need to create an option for this in ArcGIS and then collect it into the object variable. Finally, ArcGIS will save another shapefile with the points plus their cluster. This will be the only output parameter, and I collect it into the object <code>out_shape</code>.</p>
<p>Now I can start the real computation. The function <code>arc.open</code> allows to import in R the shapefile from the Toolbox in ArcGIS. If you want you can take a look at the structure of this object by simply inserting <code>print(str(d))</code> right after it. This will print the structure of the object <code>d</code> in the dialog created in ArcGIS.<br>Now we have the function <code>arc.select</code>, which allows to extract from <code>d</code> only the variables we need and that are selected by the user on the Toolbox GUI.<br>At this point we need to create a <code>data.frame</code> that we are going to fill with only the variables the user selected in the Toolbox. The object <code>variable</code> is a list of strings, therefore we can use its elements to extract single columns from the object <code>data</code>, with the syntax <code>data[,variable[1]]</code>.<br>Since we do not know how many variables will users select and we do not want to limit them, I created an <code>if</code> statement with a loop to attach additional columns to the object <code>data_clust</code>. Then I replaced the column names in <code>data_clust</code> with the names of the variables, this will help me in the next phase.<br>Now in fact, I want to produce histograms of the variables the user selected. This will allow me to check whether what I am about to do makes sense, and it is one of those things for which R excels. For this I can simply call the function <code>plot</code> and R will show it even if it is called from ArcGIS, as simple as that!! We only need to remember to insert <code>dev.new()</code> so that each plot is created separately and the user can see/save them all.<br>After this step we can call the function <code>kmeans</code> to cluster our data. Then we can collect the results in a new <code>data.frame</code>, and finally use the function <code>arc.write</code> to write the object <code>out_shape</code> with the results. As you can see we also need to specify the coordinates of each point and this can be done calling the function <code>arc.shape</code>.<br>Then we print the string “Done!!” and return the output parameters, that will be taken from ArcGIS and shown to the user.</p>
<p><span>Toolbox</span><br>Now that we’ve seen how to create the R script we can take a look at the Toolbox, since both things need to be done in parallel.<br>Creating a new Toolbox in ArcGIS is very simple, we just need to open ArcCatalog, click where we want to create it with the right mouse button and then select New->Toolbox.</p>
<div><a target="_blank" href="http://i0.wp.com/3.bp.blogspot.com/-R-mc1hK77VM/V3ZiYBOFgYI/AAAAAAAAR8g/bFK7nJuG1fw89orWy8T31fp6RYLJj8eTACLcB/s1600/Fig1.jpg?ssl=1"><img src="http://i2.wp.com/3.bp.blogspot.com/-R-mc1hK77VM/V3ZiYBOFgYI/AAAAAAAAR8g/bFK7nJuG1fw89orWy8T31fp6RYLJj8eTACLcB/s320/Fig1.jpg?resize=262%2C320&ssl=1" border="0" data-recalc-dims="1"></a></div>
<p>Once this is done we will then need to add, within this Toolbox, a script. To do this we can again click with the right button on the Toolbox we just created and then select Add->Script…</p>
<div><a target="_blank" href="http://i0.wp.com/1.bp.blogspot.com/-m79vwEw8Hqk/V3Zisct2f9I/AAAAAAAAR8k/hJmpHc3af9c503kI-49KKmh8UttuqXVXgCLcB/s1600/Fig2.jpg?ssl=1"><img src="http://i1.wp.com/1.bp.blogspot.com/-m79vwEw8Hqk/V3Zisct2f9I/AAAAAAAAR8k/hJmpHc3af9c503kI-49KKmh8UttuqXVXgCLcB/s320/Fig2.jpg?resize=307%2C320&ssl=1" border="0" data-recalc-dims="1"></a></div>
<p>At this point a dialog will appear where we can set the parameters of this script. First we add a title and a label and click proceed (my PC runs with Italian as the local language, sorry!!)</p>
<div><a target="_blank" href="http://i0.wp.com/1.bp.blogspot.com/-NTV5huw7-wE/V3ZjHP_h2bI/AAAAAAAAR8s/L3mzwC2B5nw94jWqFTLpitbmEhMUjC91wCLcB/s1600/Fig3.jpg?ssl=1"><img src="http://i2.wp.com/1.bp.blogspot.com/-NTV5huw7-wE/V3ZjHP_h2bI/AAAAAAAAR8s/L3mzwC2B5nw94jWqFTLpitbmEhMUjC91wCLcB/s320/Fig3.jpg?resize=257%2C320&ssl=1" border="0" data-recalc-dims="1"></a></div>
<p>Then we need to select the R script we need to run. Since the creation of the Toolbox can also be done before taking care of the script, here we can select an R script not completed and ArcGIS will not have any problem. This is what I did to create this example, so that I could debug the R script using <code>print</code> calls and looking at the results on the ArcGIS dialog.</p>
<div><a target="_blank" href="http://i0.wp.com/1.bp.blogspot.com/-rD7c91i8FGY/V3ZkC7QQkmI/AAAAAAAAR88/DfLhjfCoTQspHufYv-MBwpO4A-S_FELFwCLcB/s1600/Fig4.jpg?ssl=1"><img src="http://i1.wp.com/1.bp.blogspot.com/-rD7c91i8FGY/V3ZkC7QQkmI/AAAAAAAAR88/DfLhjfCoTQspHufYv-MBwpO4A-S_FELFwCLcB/s320/Fig4.jpg?resize=255%2C320&ssl=1" border="0" data-recalc-dims="1"></a></div>
<p>The next window is very important, because it allows us to set the input and output parameters that will then be passed to R. As we saw in the R script here I set 4 parameters, 3 inputs and 1 output. It is important that the order matches what we have in the R script, so for example the number of clusters is the second input.</p>
<div><a target="_blank" href="http://i2.wp.com/1.bp.blogspot.com/-3ip-rHpZYTc/V3ZkhI-q3oI/AAAAAAAAR9A/hbnw6Fnjo6Q4-ObDVcGYviR6y8cnReFmACLcB/s1600/Fig5.jpg?ssl=1"><img src="http://i0.wp.com/1.bp.blogspot.com/-3ip-rHpZYTc/V3ZkhI-q3oI/AAAAAAAAR9A/hbnw6Fnjo6Q4-ObDVcGYviR6y8cnReFmACLcB/s320/Fig5.jpg?resize=303%2C320&ssl=1" border="0" data-recalc-dims="1"></a></div>
<p>The first parameter is the input data. For this I used the type “Table View”, which allows the user to select a dataset s/he already imported in ArcGIS. I selected this because usually I first load data into ArcGIS, check them, and then perform some analysis. However, if you prefer I think you could also select the type shapefile, to allow users to select a shp directly from their PC.<br>The next parameter is the number of clusters, which is a simple number. Then we have the field variables. This is very important because we need to set it in a way that allow users to select variables directly from the dataset we are importing.</p>
<div><a target="_blank" href="http://i0.wp.com/1.bp.blogspot.com/-qEi6Sn505u8/V3dgn0A32xI/AAAAAAAAR9U/ZRIOtQnXIAwNCO8njR7fQNH-ZAlDqsudACLcB/s1600/Fig6.jpg?ssl=1"><img src="http://i0.wp.com/1.bp.blogspot.com/-qEi6Sn505u8/V3dgn0A32xI/AAAAAAAAR9U/ZRIOtQnXIAwNCO8njR7fQNH-ZAlDqsudACLcB/s320/Fig6.jpg?resize=299%2C320&ssl=1" border="0" data-recalc-dims="1"></a></div>
<p>We can do that by setting the options “Filter” and “Obtained from” that you see in the image above. It is important that we set “Obtained from” with the name of our input data.<br>At this point we can set the output file, which is a shapefile.</p>
<p>
<div><a target="_blank" href="http://i2.wp.com/1.bp.blogspot.com/-vSwa93hdJDQ/V3dhCZSTumI/AAAAAAAAR9Y/wPi20k762HcfUHA8AbXz2omqMKGykB_MQCLcB/s1600/Fig7.jpg?ssl=1"><img src="http://i2.wp.com/1.bp.blogspot.com/-vSwa93hdJDQ/V3dhCZSTumI/AAAAAAAAR9Y/wPi20k762HcfUHA8AbXz2omqMKGykB_MQCLcB/s320/Fig7.jpg?resize=309%2C320&ssl=1" border="0" data-recalc-dims="1"></a></div>
<p>One thing we could do is set the symbology for the shapefile that will be created at the end of the script. To do so we need to create and set a layer file. I did it by changing the symbology to another shapefile and then export it. The only problem is that this technique is not really flexible, meaning that if the layer is set for 5 clusters and users select 10, the symbology will still be with 5 colors. I am not sure if that can be changed or adapted somehow. If the symbology file is not provided the R script will still run correctly and produce a result, but this will not have any colors and users will need to set these afterwards, which probably is not a big deal.<br>Once this final step is done we can finish the creation of the tool and take a look at the resulting GUI:</p>
<div><a target="_blank" href="http://i0.wp.com/4.bp.blogspot.com/-wnUk3hPUc2k/V3dioaCuFwI/AAAAAAAAR9o/-FWwACt6fo0WMIh5niYD3rysXLSAjrIAwCLcB/s1600/Fig8.jpg?ssl=1"><img src="http://i0.wp.com/4.bp.blogspot.com/-wnUk3hPUc2k/V3dioaCuFwI/AAAAAAAAR9o/-FWwACt6fo0WMIh5niYD3rysXLSAjrIAwCLcB/s320/Fig8.jpg?resize=320%2C198&ssl=1" border="0" data-recalc-dims="1"></a></div>
<p><span>Run the Toolbox</span><br>Now that we have created both the script and the Toolbox to run it, we can test it. I included a shapefile with the location of Earthquakes that I downloaded from the USGS website yesterday (01 July 2016). This way you can test the tool with real data. As variables you can select: depth, magnitude, distance from volcanoes, faults and tectonic plates. For more info on this dataset please look at one of my previous posts: <a target="_blank" href="http://r-video-tutorial.blogspot.ch/2015/06/cluster-analysis-on-earthquake-data.html">http://r-video-tutorial.blogspot.ch/2015/06/cluster-analysis-on-earthquake-data.html</a><br>We only need to fill the values in the GUI and then click OK. You can see the result in the image below:</p>
<div><a target="_blank" href="http://i2.wp.com/2.bp.blogspot.com/-YD2geLiu1xI/V3dlw-ZEI-I/AAAAAAAAR90/12XTy0eAx54JinvswLlQ8l-I7I5AWqgrQCLcB/s1600/Fig9.jpg?ssl=1"><img src="http://i2.wp.com/2.bp.blogspot.com/-YD2geLiu1xI/V3dlw-ZEI-I/AAAAAAAAR90/12XTy0eAx54JinvswLlQ8l-I7I5AWqgrQCLcB/s640/Fig9.jpg?resize=456%2C242&ssl=1" border="0" data-recalc-dims="1"></a></div>
<p>As you can see R first produces a histogram of the variable/s the user selects, which can be saved. Then creates a shapefile that is automatically imported in ArcGIS. Moreover, as you can see from the dialog box, we can use the function print to provide messages to the user. Here I put only some simple text, but it may well be some numerical results.</p>
<p><span>Source Code</span><br>The source code for this Toolbox is provided in my GitHub at this link:<br><a target="_blank" href="https://github.com/fveronesi/Clustering_Toolbox">https://github.com/fveronesi/Clustering_Toolbox</a></p>
<p></p>
<p><div><div><div><div data-width="55" data-show-faces="false" data-send="true" data-layout="box_count" data-height="62" data-href="http://www.r-bloggers.com/combine-arcgis-and-r-clustering-toolbox/"></div></div><div><a data-url="http://www.r-bloggers.com/combine-arcgis-and-r-clustering-toolbox/" data-counturl="http://www.r-bloggers.com/combine-arcgis-and-r-clustering-toolbox/" data-count="vertical" data-text="Combine ArcGIS and R – Clustering Toolbox" class="twitter-share-button" data-via="rbloggers" href="https://twitter.com/share"></a></div><div></div></div><div></div></div>
<div>
<div>To <strong>leave a comment</strong> for the author, please follow the link and comment on their blog: <strong><a href="http://r-video-tutorial.blogspot.com/2016/07/combine-arcgis-and-r-clustering-toolbox.html"> R tutorial for Spatial Statistics</a></strong>.</div>
<hr>
<a rel="nofollow" href="http://www.r-bloggers.com/">R-bloggers.com</a> offers <strong><a rel="nofollow" href="http://feedburner.google.com/fb/a/mailverify?uri=RBloggers">daily e-mail updates</a></strong> about <a title="The R Project for Statistical Computing" rel="nofollow" href="http://www.r-project.org/">R</a> news and <a title="R tutorials" rel="nofollow" href="http://www.r-bloggers.com/?s=tutorial">tutorials</a> on topics such as: <a title="Data science" rel="nofollow" href="http://www.r-bloggers.com/?s=data%20science">Data science</a>, <a title="Big Data" rel="nofollow" href="http://www.r-bloggers.com/?s=Big%20Data">Big Data, <a title="R jobs" rel="nofollow" href="http://www.r-users.com/">R jobs</a>, visualization (<a title="ggplot and ggplot2 tutorials" rel="nofollow" href="http://www.r-bloggers.com/?s=ggplot2">ggplot2</a>, <a title="Boxplots using lattice and ggplot2 tutorials" rel="nofollow" href="http://www.r-bloggers.com/?s=boxplot">Boxplots</a>, <a title="Maps and gis" rel="nofollow" href="http://www.r-bloggers.com/?s=map">maps</a>, <a title="Animation in R" rel="nofollow" href="http://www.r-bloggers.com/?s=animation">animation</a>), programming (<a title="RStudio IDE for R" rel="nofollow" href="http://www.r-bloggers.com/?s=RStudio">RStudio</a>, <a title="Sweave and literate programming" rel="nofollow" href="http://www.r-bloggers.com/?s=sweave">Sweave</a>, <a title="LaTeX in R" rel="nofollow" href="http://www.r-bloggers.com/?s=LaTeX">LaTeX</a>, <a title="SQL and databases" rel="nofollow" href="http://www.r-bloggers.com/?s=SQL">SQL</a>, <a title="Eclipse IDE for R" rel="nofollow" href="http://www.r-bloggers.com/?s=eclipse">Eclipse</a>, <a title="git and github, Version Control System" rel="nofollow" href="http://www.r-bloggers.com/?s=git">git</a>, <a title="Large data in R using Hadoop" rel="nofollow" href="http://www.r-bloggers.com/?s=hadoop">hadoop</a>, <a title="Web Scraping of google, facebook, yahoo, twitter and more using R" rel="nofollow" href="http://www.r-bloggers.com/?s=Web+Scraping">Web Scraping</a>) statistics (<a title="Regressions and ANOVA analysis tutorials" rel="nofollow" href="http://www.r-bloggers.com/?s=regression">regression</a>, <a title="principal component analysis tutorial" rel="nofollow" href="http://www.r-bloggers.com/?s=PCA">PCA</a>, <a title="Time series" rel="nofollow" href="http://www.r-bloggers.com/?s=time+series">time series</a>, <a title="finance trading" rel="nofollow" href="http://www.r-bloggers.com/?s=trading">trading</a>) and more...
<img height="1" alt="" width="1" src="http://feeds.feedburner.com/~r/RBloggers/~4/m3xum15BKpw"></a></div>