<p><div><div><div><div data-width="100" data-show-faces="false" data-send="true" data-layout="button_count" data-height="21" data-href="https://www.r-bloggers.com/shiny-server-series-part-1-setting-up/"></div></div><div></div></div><div></div></div>
<div>
(This article was first published on <strong><a href="https://www.jasperginn.nl/shiny-server-series-pt1/"> Jasper Ginn's blog</a></strong>, and kindly contributed to <a rel="nofollow" href="https://www.r-bloggers.com/">R-bloggers)</a> </div>
<p><em>This guide is part of a series on setting up your own private server running shiny apps. There are many guides out there with great advice on how to set up an R shiny server and related software. I try to make a comprehensive guide based in part on these resources as well as my own experiences. I always aim to properly attribute information to their respective sources. If you notice an issue, please contact me.</em></p>
<p>Welcome to the first part of the shiny server series!</p>
<p>Recently, I have had to set up several shiny servers that required some custom tweaks like user authentication, running shiny server on multiple ports and setting up SSL. With the help of numerous resources, I got everything running smoothly. I decided to publish these steps on my blog so that others might also use them. In this first part, we’ll be setting up the private server and installing shiny.</p>
<h2>Resources used for this part</h2>
<p>This guide draws from other guides on the web. The guides below were used to put together this resource.</p>
<ol>
<li><a target="_blank" rel="nofollow" href="https://www.digitalocean.com/community/tutorials/how-to-install-r-on-ubuntu-16-04-2">This guide</a> shows you how to install R on Ubuntu 16.04</li>
<li>Dean Attali’s <a target="_blank" rel="nofollow" href="http://deanattali.com/2015/05/09/setup-rstudio-shiny-server-digital-ocean/">blog post</a> is one of the best and most comprehensive guides on setting up your own shiny server.</li>
<li><a target="_blank" rel="nofollow" href="https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean">This guides</a> – is used to couple a domain name to your server.</li>
</ol>
<h2>What you’ll need</h2>
<p>In order to complete this entire series, I expect you have access to the following:</p>
<ul>
<li>A Virtual Private Server (VPS, see below)</li>
<li>A domain name, such as www.iamadomainname.com. These are available on e.g. <a target="_blank" rel="nofollow" href="https://www.jasperginn.nl/shiny-server-series-pt1/www.namecheap.com">namecheap</a>.</li>
</ul>
<p>If you have these two things, you may proceed!</p>
<h2>A VP…What?</h2>
<p>A <a target="_blank" rel="nofollow" href="https://en.wikipedia.org/wiki/Virtual_private_server">Virtual Private Server (VPS)</a> is a service that you can purchase from providers such as DigitalOcean, Amazon AWS and Google Cloud Services. Instead of buying a physical server and planting it in your home somewhere, you essentially rent a small portion of a server from a provider which then looks like a normal server environment: you have your own OS and you can manage your own users and so on.</p>
<p>In this guide, I’ll be using DigitalOcean, but you can use any VPS from any provider as long as it runs on Ubuntu 16.04 and has at least 512MB RAM and one processor. You can use <a target="_blank" rel="nofollow" href="https://m.do.co/c/2e2a784a04cd">this link</a> to sign up to DigitalOcean. You’ll receive $10 in credit.</p>
<h2>Setting up a VPS on DigitalOcean</h2>
<p>After signing up to DO, you will see the following screen</p>
<p><img alt="" src="https://i2.wp.com/www.jasperginn.nl/assets/images/blog/shiny_series_pt1/1_createdroplet.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>There won’t be much going on here … yet! Click on ‘create droplet’ to set up your VPS. The options are relatively straightforward here. You want to select a Ubuntu 16.04 distribution.</p>
<p><img alt="" src="https://i1.wp.com/www.jasperginn.nl/assets/images/blog/shiny_series_pt1/2_selectimage.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>Then, you can decide how much power your droplet will have. I chose the smallest version, which works perfectly fine, but feel free to take a bigger size if you like.</p>
<p><img alt="" src="https://i0.wp.com/www.jasperginn.nl/assets/images/blog/shiny_series_pt1/3_selectsize.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>Select an appropriate data centre (usually that means choosing one in or near your own country)</p>
<p><img alt="" src="https://i2.wp.com/www.jasperginn.nl/assets/images/blog/shiny_series_pt1/4_selectdatacenter.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>The final set of options can look arcane if you’re not used to them. Fortunately, the only option you really need to pay attention to is the SSH key.</p>
<p><img alt="" src="https://i0.wp.com/www.jasperginn.nl/assets/images/blog/shiny_series_pt1/5_selectoptions.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>An SSH key functions as a unique identifier for you, the owner of the VPS, and adds a layer of security to your server. DigitalOcean provides a tutorial for <a target="_blank" rel="nofollow" href="https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-with-putty-on-digitalocean-droplets-windows-users">Windows users</a> and <a target="_blank" rel="nofollow" href="https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-with-digitalocean-droplets">Unix</a> users on their website. This step is optional: you don’t have to do it, but I strongly recommended.</p>
<p>After you’ve set up the SSH access, you can choose a suitable name for your droplet and press ‘create’.</p>
<p>Congratulations! You are now the proud owner of your own VPS.</p>
<h2>Accessing your server and setting up shiny</h2>
<p>Click on ‘droplets’ at the top right of the DO menu. Copy the IP address of your droplet and open up a terminal or PuTTY. Log into your server:</p>
<figure>
<pre><code data-lang="shell">ssh root@&lt;ip-address></code></pre>
</figure>
<h3>Setting up a user</h3>
<p>Since we don’t want to use the root user to install everything, we’ll create a new user called ‘shiny’. When you are prompted to enter a name, office number etc. you can just hit enter:</p>
<figure>
<pre><code data-lang="shell">adduser shiny</code></pre>
</figure>
<p>Next, we give the shiny user admin rights and switch to the shiny user:</p>
<figure>
<pre><code data-lang="shell"><span># Give shiny admin rights</span>
gpasswd -a shiny sudo
<span># Switch to shiny user</span>
su shiny</code></pre>
</figure>
<h3>Installing dependencies</h3>
<p>Firstly, update the list of packages:</p>
<figure>
<pre><code data-lang="shell">sudo apt-get update</code></pre>
</figure>
<p>Then add the CRAN repository to this list (copy these commands one by one):</p>
<figure>
<pre><code data-lang="shell"><span># Add a trusted key</span>
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
<span># Add the CRAN repo</span>
sudo add-apt-repository <span>'deb [arch=amd64,i386] https://cran.rstudio.com/bin/linux/ubuntu xenial/'</span>
<span># Update the list again</span>
sudo apt-get update</code></pre>
</figure>
<p>If your droplet has 1G of RAM or less, we need to set up some swap space. This will allow the server to use hard-drive space as additional RAM when it needs to:</p>
<figure>
<pre><code data-lang="shell"><span># Set up swap</span>
sudo /bin/dd <span>if</span><span>=</span>/dev/zero <span>of</span><span>=</span>/var/swap.1 <span>bs</span><span>=</span>1M <span>count</span><span>=</span>1024
sudo /sbin/mkswap /var/swap.1
sudo /sbin/swapon /var/swap.1
sudo sh -c <span>'echo &quot;/var/swap.1 swap swap defaults 0 0 &quot; >> /etc/</span></code></pre>
</figure>
<p>Now, we’re ready to install R and other dependencies for shiny server:</p>
<figure>
<pre><code data-lang="shell"><span># Install R</span>
sudo apt-get -y install r-base r-base-dev
<span># Install shiny server dependencies</span>
sudo apt-get -y install libapparmor1 gdebi-core
<span># These are used by R libraries</span>
sudo apt-get install -y libxml2-dev libcurl4-openssl-dev libssl-dev</code></pre>
</figure>
<p>Copy and execute the following lines to install these R packages:</p>
<figure>
<pre><code data-lang="shell"><span># Install shiny</span>
sudo su - -c <span>&quot;R -e </span><span>\&quot;</span><span>install.packages('shiny', repos='http://cran.rstudio.com/')</span><span>\&quot;</span><span>&quot;</span>
<span># Install devtools</span>
sudo su - -c <span>&quot;R -e </span><span>\&quot;</span><span>install.packages('devtools', repos='http://cran.rstudio.com/')</span><span>\&quot;</span><span>&quot;</span>
<span># Install digest</span>
sudo su - -c <span>&quot;R -e </span><span>\&quot;</span><span>install.packages('digest', repos='http://cran.rstudio.com/')</span><span>\&quot;</span><span>&quot;</span></code></pre>
</figure>
<p>Now we’re ready to install shiny server:</p>
<figure>
<pre><code data-lang="shell"><span># Download rstudio server:</span>
wget https://download2.rstudio.org/rstudio-server-1.0.136-amd64.deb
<span># Download shiny server:</span>
wget https://download3.rstudio.org/ubuntu-12.04/x86_64/shiny-server-1.5.1.834-amd64.deb
<span># Install</span>
sudo gdebi rstudio-server-1.0.136-amd64.deb
sudo gdebi shiny-server-1.5.1.834-amd64.deb</code></pre>
</figure>
<p>The rstudio and shiny server are now accessible on ports 8787 and 3838: you can access them by navigating to </p>
<p>While this is fine, it’s a bit difficult to remember and not very ideal to share with others. This is easily solvable! We can simply point a domain name to our new server.</p>
<h2>Pointing a domain name to your server</h2>
<p>This step involves two actions: one from the provider you bought the domain name from, and one on the DO dashboard.</p>
<h3>Changing name servers</h3>
<p>The first thing we’ll do is to change the name servers of your domain name so that they point to the DO name servers. Most providers will give this option and the process is largely the same, but I’ll be using my namecheap account.</p>
<p>Once you are logged into your namecheap account, you will see the following screen:</p>
<p><img alt="" src="https://i1.wp.com/www.jasperginn.nl/assets/images/blog/shiny_series_pt1/NC_fig1.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>Click on the ‘manage’ button for the domain name you want to use. You will now see the following screen:</p>
<p><img alt="" src="https://i0.wp.com/www.jasperginn.nl/assets/images/blog/shiny_series_pt1/NC_fig2.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>Click on the arrow (surrounded by green box) and select ‘custom DNS’ (surrounded by blue box). Add the DO name servers as shown in the image below:</p>
<p><img alt="" src="https://i2.wp.com/www.jasperginn.nl/assets/images/blog/shiny_series_pt1/namecheap2.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>Save your changes and close the tab.</p>
<h3>Setting up A and CNAME records on DigitalOcean</h3>
<p>In your DO dashboard, click on the ‘networking’ option</p>
<p><img alt="" src="https://i2.wp.com/www.jasperginn.nl/assets/images/blog/shiny_series_pt1/DO_networking_fig1.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>Enter your domain name (without ‘www’) and click ‘add domain’</p>
<p><img alt="" src="https://i1.wp.com/www.jasperginn.nl/assets/images/blog/shiny_series_pt1/DO_networking_fig2.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>We’re going to add one A-record and two CNAME records. Firstly, add ‘@’ under the hostname as in the image below and click ‘Create Record’:</p>
<p><img alt="" src="https://i0.wp.com/www.jasperginn.nl/assets/images/blog/shiny_series_pt1/3_DO_networking.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>Next, create a CNAME record. Under ‘hostname’ enter ‘*’, and under ‘is an alias of’, enter ‘@‘, as shown in the picture below:</p>
<p><img alt="" src="https://i2.wp.com/www.jasperginn.nl/assets/images/blog/shiny_series_pt1/4_DO_networking.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>Next, create another CNAME record where you input ‘www’ under ‘hostname’ and ‘@’ under ‘is an alias of’:</p>
<p><img alt="" src="https://i1.wp.com/www.jasperginn.nl/assets/images/blog/shiny_series_pt1/5_DO_networking.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>The entire setup should look like the image below</p>
<p><img alt="" src="https://i0.wp.com/www.jasperginn.nl/assets/images/blog/shiny_series_pt1/6_DO_networking.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>You are now done setting up your domain name. Nominally, it can take up to 24 hours before your domain name points to your server, but usually this takes less than several hours.</p>
<h3>Configuring nginx on your server</h3>
<p>OK. So now your server can be accessed using a custom domain name. This is great, but rstudio and shiny server are still only accessible using the ports on which they are hosted. We’ll now set up <a target="_blank" rel="nofollow" href="https://en.wikipedia.org/wiki/Nginx">Nginx</a> on your server to manage the routes to the shiny and studio servers.</p>
<p>Go back to the terminal where you’re logged into the server, and execute the following:</p>
<figure>
<pre><code data-lang="shell">sudo apt-get -y install nginx</code></pre>
</figure>
<p>Now, make a backup of the nginx configuration:</p>
<figure>
<pre><code data-lang="shell">sudo cp /etc/nginx/sites-enabled/default /etc/nginx/sites-enabled/default-backup</code></pre>
</figure>
<p>Open up the configuration file</p>
<figure>
<pre><code data-lang="shell">sudo nano /etc/nginx/sites-enabled/default</code></pre>
</figure>
<p>As in the image below, add ‘localhost’ to the server name (green box).</p>
<p><img alt="" src="https://i1.wp.com/www.jasperginn.nl/assets/images/blog/shiny_series_pt1/1_nginx.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>Then, copy the following lines to the config file and paste them in the location shown in the image (area surrounded by pink box).</p>
<figure>
<pre><code data-lang="text">        location /apps/ {
              proxy_pass http://127.0.0.1:3838/;
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection “upgrade”;
        }
		  location /editor/ {
              proxy_pass http://127.0.0.1:8787/;
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection “upgrade”;
        }</code></pre>
</figure>
<p>Hit <code>control+x</code> and then <code>Y+enter</code>, and your changes will be saved. Your rstudio and shiny servers are now accessible using e.g. www.</p>
<h2>Adding shiny applications</h2>
<p>The easiest way to install shiny applications is to create a github or bitbucket repository for the shiny application, which you then clone in the shiny server directory. However, first we need to set up user rights for our shiny user.</p>
<h3>Setting up permissions</h3>
<p>First, navigate to the shiny server directory where the apps live:</p>
<figure>
<pre><code data-lang="shell"><span>cd</span> /srv/shiny-server</code></pre>
</figure>
<p>Then, give the shiny user read/write permissions:</p>
<figure>
<pre><code data-lang="shell">sudo groupadd shiny-apps
sudo usermod -aG shiny-apps shiny
sudo chown -R shiny:shiny-apps .
sudo chmod g+w .
sudo chmod g+s .</code></pre>
</figure>
<h3>Example: hosting an application</h3>
<p>This part shows how you can store your shiny apps on github and host them on your server.</p>
<p>Sign up for a github account if you have not already. You can also choose to use bitbucket: the process is largely the same.</p>
<p>Create a repository and follow the steps to add files to it.</p>
<p><img alt="" src="https://i1.wp.com/www.jasperginn.nl/assets/images/blog/shiny_series_pt1/1_GH.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>Follow the steps on the next screen to add files to your repository</p>
<p><img alt="" src="https://i1.wp.com/www.jasperginn.nl/assets/images/blog/shiny_series_pt1/3_GH.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>When you’ve pushed your server.R and ui.R files, it should look like this</p>
<p><img alt="" src="https://i2.wp.com/www.jasperginn.nl/assets/images/blog/shiny_series_pt1/2_GH.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>You can now clone this repository in your server by clicking the ‘clone or download’ button (surrounded by the pink box). Copy the url and go back to the terminal where you are logged into your server. Then, execute the following commands:</p>
<figure>
<pre><code data-lang="shell"><span># Navigate to the folder with shiny applications</span>
<span>cd</span> /srv/shiny-server
<span># Clone the repository</span>
git clone https://github.com/JasperHG90/TenK-example.git
<span># Install dependencies</span>
sudo su - -c <span>&quot;R -e </span><span>\&quot;</span><span>devtools::install_github('JasperHG90/TenK')</span><span>\&quot;</span><span>&quot;</span></code></pre>
</figure>
<p>You can now visit the shiny application by navigating to <code>www.&lt;your-domain-name>.&lt;extension>/apps/TenK-example</code> in a browser.</p>
<h3>Some notes on installing R packages</h3>
<p>When installing R packages, it’s best to use the following code:</p>
<figure>
<pre><code data-lang="shell">sudo su - -c <span>&quot;R -e </span><span>\&quot;</span><span>install.packages('&lt;package-name>', repos='http://cran.rstudio.com/')</span><span>\&quot;</span><span>&quot;</span></code></pre>
</figure>
<p>This ensures that packages are installed globally and that every user has access to it.</p>
<h4>Using packrat</h4>
<p>You can use packrat – a package management system authored by rstudio – for shiny applications. Packrat is quite useful because it creates a local repository (with, for example, specific package versions) of packages. The advantage of this approach is that it improves the portability of the application and ensures that apps that use the same dependencies but, for example, different versions of that dependency can easily run on the same system. On the flip side, it does not work very well with certain specific libraries such as rgdal. You can read more about packrat on <a target="_blank" rel="nofollow" href="https://rstudio.github.io/packrat/">this page</a>.</p>
<h5>Setting up packrat</h5>
<p>Setting up packrat is easy. In rstudio, start a new project (or open an existing one).</p>
<p><img alt="" src="https://i2.wp.com/www.jasperginn.nl/assets/images/blog/shiny_series_pt1/1_packrat.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>Go to the packrat section and check the box</p>
<p><img alt="" src="https://i1.wp.com/www.jasperginn.nl/assets/images/blog/shiny_series_pt1/2_packrat.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>Packrat will now make a local repository with necessary packages. This can take a while.</p>
<p><img alt="" src="https://i0.wp.com/www.jasperginn.nl/assets/images/blog/shiny_series_pt1/3_packrat.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>Don’t forget to <a target="_blank" rel="nofollow" href="https://help.github.com/articles/adding-a-file-to-a-repository-using-the-command-line/">push</a> these changes to your github repository.</p>
<h5>Cloning the repo and restoring the library</h5>
<p>Getting the repository with the packrat library is very similar to the process outlined above.</p>
<p>First, install the packrat package:</p>
<figure>
<pre><code data-lang="shell">sudo su - -c <span>&quot;R -e </span><span>\&quot;</span><span>install.packages('packrat', repos='http://cran.rstudio.com/')</span><span>\&quot;</span><span>&quot;</span></code></pre>
</figure>
<p>Navigate to the /srv/shiny-server folder and clone the repository:</p>
<figure>
<pre><code data-lang="shell"><span># Navigate to the folder</span>
<span>cd</span> /srv/shiny-server
<span># Clone the repo</span>
git clone https://github.com/JasperHG90/tenk-example-2.git</code></pre>
</figure>
<p>Now, enter the repository and start an R session:</p>
<figure>
<pre><code data-lang="shell"><span># Enter the folder</span>
<span>cd </span>tenk-example-2
<span># Start an R session</span>
R</code></pre>
</figure>
<p>Packrat should automatically kick in and start installing packages. If it doesn’t, execute the following:</p>
<figure>
<pre><code data-lang="r"><span>packrat</span><span>::</span><span>restore</span><span>()</span></code></pre>
</figure>
<p><img alt="" src="https://i1.wp.com/www.jasperginn.nl/assets/images/blog/shiny_series_pt1/4_packrat.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>Execute <code>q()</code> to quit the R session</p>
<h2>Future content in this series</h2>
<p>This wraps up the first part of the shiny server series. You now have a VPS with a custom domain name and running rstudio plus shiny servers. This setup forms the basis on which the next installments of this series build.</p>
<p>Subsequent parts in this series will focus on the following topics</p>
<h3>Part 2: running shiny server on multiple ports</h3>
<p>We’ll run shiny server on multiple ports so that we have one server to host public shiny apps and another server to host private apps for a select group of people. We’ll add user authentication to this private server in part 4 of this series.</p>
<h3>Part 3: adding an SSL security certificate</h3>
<p>Before we can add user authentication to shiny, we want to set up an SSL certificate to buff security on our server. This encrypts traffic from and to your server.</p>
<h3>Part 4: adding user authentication to your server using Auth0</h3>
<p>In this part, we’ll use Auth0, a free service for up to 7.000 users, to add authentication to our shiny server running private applications. To this end, we’ll slightly adapt the excellent <a target="_blank" rel="nofollow" href="https://auth0.com/blog/adding-authentication-to-shiny-server/">Auth0 tutorial</a> to work with our setup.</p>
<h3>Part 5: hosting a static website on your server</h3>
<p>Most websites have a front end and a back end. The front end is what you see when you visit a page. The back end usually consists of one or more databases and services such as user authentication. Conversely, a <a target="_blank" rel="nofollow" href="https://en.wikipedia.org/wiki/Static_web_page">static website</a> is simply a front end: you pre-compile all necessary materials before hosting it on a server. Static websites do not require databases and are typically fast to load. Examples of services that help you make static websites are <a target="_blank" rel="nofollow" href="https://jekyllrb.com/">Jekyll</a> and <a target="_blank" rel="nofollow" href="https://blog.getpelican.com/">Pelican</a>, to name a few.</p>
<p>You can use the GitHub approach outlined above for shiny applications for static websites as well. You create a repository, upload the static website, and then clone it in the directory from which nginx hosts its example page.</p>
<p>
<div>
<div>To <strong>leave a comment</strong> for the author, please follow the link and comment on their blog: <strong><a href="https://www.jasperginn.nl/shiny-server-series-pt1/"> Jasper Ginn's blog</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 title="The R Project for Statistical Computing" rel="nofollow" href="https://www.r-project.org/">R</a> news and <a title="R tutorials" rel="nofollow" href="https://www.r-bloggers.com/search/tutorial">tutorials</a> on topics such as: <a title="Data science" rel="nofollow" href="https://www.r-bloggers.com/search/data%20science">Data science</a>, <a title="Big Data" rel="nofollow" href="https://www.r-bloggers.com/search/Big%20Data">Big Data, <a title="R jobs" rel="nofollow" href="https://www.r-users.com/">R jobs</a>, visualization (<a title="ggplot and ggplot2 tutorials" rel="nofollow" href="https://www.r-bloggers.com/search/ggplot2">ggplot2</a>, <a title="Boxplots using lattice and ggplot2 tutorials" rel="nofollow" href="https://www.r-bloggers.com/search/boxplot">Boxplots</a>, <a title="Maps and gis" rel="nofollow" href="https://www.r-bloggers.com/search/map">maps</a>, <a title="Animation in R" rel="nofollow" href="https://www.r-bloggers.com/search/animation">animation</a>), programming (<a title="RStudio IDE for R" rel="nofollow" href="https://www.r-bloggers.com/search/RStudio">RStudio</a>, <a title="Sweave and literate programming" rel="nofollow" href="https://www.r-bloggers.com/search/sweave">Sweave</a>, <a title="LaTeX in R" rel="nofollow" href="https://www.r-bloggers.com/search/LaTeX">LaTeX</a>, <a title="SQL and databases" rel="nofollow" href="https://www.r-bloggers.com/search/SQL">SQL</a>, <a title="Eclipse IDE for R" rel="nofollow" href="https://www.r-bloggers.com/search/eclipse">Eclipse</a>, <a title="git and github, Version Control System" rel="nofollow" href="https://www.r-bloggers.com/search/git">git</a>, <a title="Large data in R using Hadoop" rel="nofollow" href="https://www.r-bloggers.com/search/hadoop">hadoop</a>, <a title="Web Scraping of google, facebook, yahoo, twitter and more using R" rel="nofollow" href="https://www.r-bloggers.com/search/Web+Scraping">Web Scraping</a>) statistics (<a title="Regressions and ANOVA analysis tutorials" rel="nofollow" href="https://www.r-bloggers.com/search/regression">regression</a>, <a title="principal component analysis tutorial" rel="nofollow" href="https://www.r-bloggers.com/search/PCA">PCA</a>, <a title="Time series" rel="nofollow" href="https://www.r-bloggers.com/search/time+series">time series</a>, <a title="finance trading" rel="nofollow" href="https://www.r-bloggers.com/search/trading">trading</a>) and more...
<img height="1" alt="" width="1" src="http://feeds.feedburner.com/~r/RBloggers/~4/eUg0fphLQRA"></a></div>