<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>R language &#8211; Smals Research</title>
	<atom:link href="https://www.smalsresearch.be/tag/r-language/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.smalsresearch.be</link>
	<description></description>
	<lastBuildDate>Thu, 09 Apr 2026 12:11:45 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.smalsresearch.be/wp-content/uploads/2026/01/cropped-cropped-Smals_Research-32x32.png</url>
	<title>R language &#8211; Smals Research</title>
	<link>https://www.smalsresearch.be</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>OpenCPU: een platform om R-code als webservice te hergebruiken</title>
		<link>https://www.smalsresearch.be/opencpu-een-platform-om-r-code-als-webservice-te-hergebruiken/</link>
		
		<dc:creator><![CDATA[Jan Meskens]]></dc:creator>
		<pubDate>Thu, 11 Oct 2012 10:50:22 +0000</pubDate>
				<category><![CDATA[Blog post]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OpenCPU]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[R language]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[saas]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[visualization]]></category>
		<guid isPermaLink="false">/?p=4599</guid>

					<description><![CDATA[Om (complexe) statistische en wiskundige berekeningen te implementeren is het vaak aangewezen om specifieke programmeertalen en bijhorende omgevingen te gebruiken  zoals bv Matlab, R, SAS of Mathematica. Elk van deze omgeving laat toe om in een beperkt aantal lijnen code berekeningen uit te voeren die moeilijk te realiseren zouden zijn in meer generieke programmeertalen.  Onze eigen [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Om (complexe) statistische en wiskundige berekeningen te implementeren is het vaak aangewezen om specifieke programmeertalen en bijhorende omgevingen te gebruiken  zoals bv <a href="https://en.wikipedia.org/wiki/MATLAB">Matlab</a>, <a href="https://en.wikipedia.org/wiki/R_(programming_language)">R</a>, <a href="https://en.wikipedia.org/wiki/SAS_(software)">SAS </a>of <a href="https://en.wikipedia.org/wiki/Mathematica">Mathematica</a>. Elk van deze omgeving laat toe om in een beperkt aantal lijnen code berekeningen uit te voeren die moeilijk te realiseren zouden zijn in meer generieke programmeertalen.  Onze eigen ervaringen met verscheidene geavanceerde analyses in <a href="https://en.wikipedia.org/wiki/R_(programming_language)">R</a> &#8211; een open-source programmeertaal en software omgeving voor statistische berekeningen en grafieken &#8211; bevestigen dit.</p>
<p>Het gebruiken van specifieke programmeeromgevingen heeft echter ook enkele vervelende nadelen:</p>
<ul>
<li>De output van de berekeningen uitgevoerd in deze programmeeromgevingen dienen vaak gebruikt te worden als input voor een nieuw programma, rapport, webapplicatie, &#8230; .  Dit is vaak een complex gegeven waarbij heel wat configuratie en integratie komt kijken;</li>
<li>Analyses en berekeningen kunnen vaak nuttig zijn voor meerdere personen, instellingen, onderzoekers&#8230;  Het is weinig flexibel om analyses te delen met de requirement om een hele software stack te installeren.</li>
</ul>
<p>Om code afkomstig van specifieke programmeeromgevingen makkelijker te delen en te integreren introduceert doctoraatsonderzoeker<a href="https://www.stat.ucla.edu/~jeroen/"> Jeroen Ooms</a> &#8216;<a href="https://public.opencpu.org/pages/">OpenCPU</a>&#8216;. <strong>OpenCPU</strong> is een centraal platform waarop men R-scripts kan plaatsen. De scripts die men op OpenCPU plaatst worden vervolgens automatisch beschikbaar als <a href="https://en.wikipedia.org/wiki/Representational_state_transfer">REST</a>-services.  Deze services kan men makkelijk integreren in andere programmas/webapplicaties. Belangrijk is ook te vermelden dat OpenCPU een open-source platform is. Dit maakt het mogelijk om intern een eigen OpenCPU-server op te zetten (met de nodige beveiligingen) en indien nodig te koppelen aan interne achterliggende databases.</p>
<p><span id="more-4599"></span></p>
<p><span style="text-decoration: underline;"><strong>OpenCPU Tutorial</strong></span></p>
<p>Bij wijze van proof-of-concept hebben we getest hoe men OpenCPU kan gebruiken om een <em>bar-chart analyse</em> te genereren in een web-applicatie. De stappen die we hierbij ondernomen hebben staan hieronder opgesomd.</p>
<p><strong>Stap 1: Verzamel en upload de nodige data</strong></p>
<p>In deze proof-of-concept analyseren we het klantenbestand van bedrijf X. Elke klant heeft een bepaalde Importance code van 1 tot 9 (1=een klant met weinig opbrengst, 9 een klant met heel veel opbrengst). Per klant houdt men ook bij of  hij makkelijk beschikbaar is voor een telefonische enquete (Y=yes,N=no). Onderstaande tabel geeft deze twee dimensies weer, gekoppeld aan het aantal klanten (Frequency) die in deze categoriëen kunnen ondergebracht worden.</p>
<table>
<thead>
<tr>
<th>Importance</th>
<th>Available</th>
<th>Frequency</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>N</td>
<td>557238</td>
</tr>
<tr>
<td>2</td>
<td>N</td>
<td>53354</td>
</tr>
<tr>
<td>3</td>
<td>N</td>
<td>27857</td>
</tr>
<tr>
<td>4</td>
<td>N</td>
<td>18746</td>
</tr>
<tr>
<td>5</td>
<td>N</td>
<td>5575</td>
</tr>
<tr>
<td>6</td>
<td>N</td>
<td>2717</td>
</tr>
<tr>
<td>7</td>
<td>N</td>
<td>1702</td>
</tr>
<tr>
<td>8</td>
<td>N</td>
<td>547</td>
</tr>
<tr>
<td>9</td>
<td>N</td>
<td>504</td>
</tr>
<tr>
<td>1</td>
<td>Y</td>
<td>132551</td>
</tr>
<tr>
<td>2</td>
<td>Y</td>
<td>19218</td>
</tr>
<tr>
<td>3</td>
<td>Y</td>
<td>10332</td>
</tr>
<tr>
<td>4</td>
<td>Y</td>
<td>5881</td>
</tr>
<tr>
<td>5</td>
<td>Y</td>
<td>1469</td>
</tr>
<tr>
<td>6</td>
<td>Y</td>
<td>478</td>
</tr>
<tr>
<td>7</td>
<td>Y</td>
<td>142</td>
</tr>
<tr>
<td>8</td>
<td>Y</td>
<td>26</td>
</tr>
<tr>
<td>9</td>
<td>Y</td>
<td>5</td>
</tr>
</tbody>
</table>
<p>Bovenstaande data kan men uploaden als CSV-file (of ander formaat) op de OpenCPU server via volgende <a href="https://public.opencpu.org/userapps/jun9/opencpu.demo/uploadfile/">link</a>. Eens de data geupload is krijgt men een <strong>unieke ID</strong> terug waar de data te vinden is.</p>
<p><strong>Stap 2: Creëer en save het R-script</strong></p>
<p><strong></strong>In een volgende stap willen we een barchart genereren die per Importance-code weergeeft hoeveel klanten er zijn, en elke bar inkleurt in twee vlakken: een vlak makkelijk beschikbare klanten en een vlak met moeilijk beschikbare. Deze grafiek genereren we met de<a href="https://cran.r-project.org/web/packages/ggplot2/index.html"> ggplot2</a> library. Onderstaande code omvat het complete R-script:</p>
<pre><em>#Include ggplot 2 library</em>
<strong>library("ggplot2"); </strong>
<em>#Haal de geuploade data op (zie stap1, de DATAID is dezelfde als uit deze stap) </em>
<strong>myTable &lt;- read.csv("http://public.opencpu.org/R/tmp/<em>DATAID</em>/csv?");</strong>
<em>#Plot en print te barchart</em>
<strong>pl &lt;- ggplot(myTable, aes(x = Importance, y = Frequency,fill=Available) ) + geom_bar(stat="identity");</strong>
<strong>print(pl);</strong></pre>
<p>Dit script zetten we op de OpenCPU-server via volgende <a href="https://public.opencpu.org/userapps/jun9/opencpu.demo/runcode/">link</a>, we kiezen voor de optie &#8216;save to store&#8217;. Deze code krijgt ook een<strong> unieke ID</strong>, dewelke we later kunnen gebruiken om de code uit te voeren via een REST-service.</p>
<p><strong>Stap 3: Maak de web-applicate met de REST service</strong></p>
<p>De bar-chart die we gemaakt hebben in het R-script willen we nu tonen in een web-applicatie. Dit doen we via een eenvoudige Javascript applicatie die de OpenCPU-REST webservice aanroept. OpenCPU biedt verscheidene webservices aan om een plot te laden: als pdf, png, svg, R-file, &#8230; Wij hebben hier gekozen om de plot in te laten als SVG. Onderstaand is de source-code  en een screenshot van de webapplicatie weergegeven (de status na het klikken op de &#8220;calculate graph&#8221; button).</p>
<p style="text-align: center;"><img fetchpriority="high" decoding="async" class="size-full wp-image-4633 aligncenter" title="openCPU-webappresult" src="/wp-content/uploads/2012/09/openCPU-webappresult1.png" alt="" width="688" height="517" srcset="https://www.smalsresearch.be/wp-content/uploads/2012/09/openCPU-webappresult1.png 1114w, https://www.smalsresearch.be/wp-content/uploads/2012/09/openCPU-webappresult1-300x225.png 300w, https://www.smalsresearch.be/wp-content/uploads/2012/09/openCPU-webappresult1-1024x768.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2012/09/openCPU-webappresult1-768x576.png 768w" sizes="(max-width: 688px) 100vw, 688px" /></p>
<p>&nbsp;</p>
<pre>&lt;html&gt;
 &lt;head&gt;
 &lt;script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"  type="text/javascript"&gt;
 &lt;/script&gt;
 <strong>
 &lt;script type="text/javascript"&gt; 
     $(document).ready(function() { 
          $("button").click( 
                 function(){ 
                      $("#svg").load("http://public.opencpu.org/R/tmp/SCRIPTOPENCPUID/svg", function() {});
                 } 
          );
     }); 
 &lt;/script&gt;
 </strong>
 &lt;/head&gt;
 &lt;body&gt;
   <strong>
   &lt;button&gt;Calculate graph&lt;/button&gt; 
   &lt;div id="svg"&gt; &lt;/div&gt;
   </strong>
 &lt;/body&gt;
 &lt;/html&gt;</pre>
<p>&nbsp;</p>
<p><span style="text-decoration: underline;"><strong>Besluit</strong></span></p>
<p>Specifieke softwarepakketten en programmeertalen zijn handig om in enkele lijnen code complexe berekeningen uit te voeren. Het is echter moeilijk om deze scripts te koppelen met bestaande code en te delen met verschillende mensen. Als oplossing voor dit probleem kunnen we OpenCPU gebruiken, een opensource server waar R-code op gepusht kan worden en vervolgens kan aangeroepen worden als REST-service. In een tutorial toonden we aan hoe deze aanpak werkt.  Er zijn ook nog 2 blogposts die deze aanpak beschrijven: <a href="https://blog.opencpu.org/2011/08/embedding-a-plot-in-your-website/">embedding a plot in your website</a> en <a href="https://blog.opencpu.org/2012/01/running-a-block-of-r-code-in-opencpu/">running a block of R-code in OpenCPU</a>.</p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
