{"version":"1.0","provider_name":"Data Science made in Switzerland","provider_url":"https:\/\/blog.zhaw.ch\/datascience","author_name":"mild","author_url":"https:\/\/blog.zhaw.ch\/datascience\/author\/mild\/","title":"R: Reduce() - apply\u2019s lesser known brother","type":"rich","width":600,"height":338,"html":"<blockquote class=\"wp-embedded-content\" data-secret=\"7LlbVlnLNe\"><a href=\"https:\/\/blog.zhaw.ch\/datascience\/r-reduce-applys-lesser-known-brother\/\">R: Reduce() &#8211; apply\u2019s lesser known brother<\/a><\/blockquote><iframe sandbox=\"allow-scripts\" security=\"restricted\" src=\"https:\/\/blog.zhaw.ch\/datascience\/r-reduce-applys-lesser-known-brother\/embed\/#?secret=7LlbVlnLNe\" width=\"600\" height=\"338\" title=\"&#8220;R: Reduce() &#8211; apply\u2019s lesser known brother&#8221; &#8212; Data Science made in Switzerland\" data-secret=\"7LlbVlnLNe\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" class=\"wp-embedded-content\"><\/iframe><script>\n\/*! This file is auto-generated *\/\n!function(d,l){\"use strict\";l.querySelector&&d.addEventListener&&\"undefined\"!=typeof URL&&(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&&!\/[^a-zA-Z0-9]\/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret=\"'+t.secret+'\"]'),o=l.querySelectorAll('blockquote[data-secret=\"'+t.secret+'\"]'),c=new RegExp(\"^https?:$\",\"i\"),i=0;i<o.length;i++)o[i].style.display=\"none\";for(i=0;i<a.length;i++)s=a[i],e.source===s.contentWindow&&(s.removeAttribute(\"style\"),\"height\"===t.message?(1e3<(r=parseInt(t.value,10))?r=1e3:~~r<200&&(r=200),s.height=r):\"link\"===t.message&&(r=new URL(s.getAttribute(\"src\")),n=new URL(t.value),c.test(n.protocol))&&n.host===r.host&&l.activeElement===s&&(d.top.location.href=t.value))}},d.addEventListener(\"message\",d.wp.receiveEmbedMessage,!1),l.addEventListener(\"DOMContentLoaded\",function(){for(var e,t,s=l.querySelectorAll(\"iframe.wp-embedded-content\"),r=0;r<s.length;r++)(t=(e=s[r]).getAttribute(\"data-secret\"))||(t=Math.random().toString(36).substring(2,12),e.src+=\"#?secret=\"+t,e.setAttribute(\"data-secret\",t)),e.contentWindow.postMessage({message:\"ready\",secret:t},\"*\")},!1)))}(window,document);\n\/\/# sourceURL=https:\/\/blog.zhaw.ch\/datascience\/wp-includes\/js\/wp-embed.min.js\n<\/script>\n","description":"By Thoralf Mildenberger (ZHAW) Everybody who knows a bit about R knows that in general loops are said to be evil and should be avoided, both for efficiency reasons and code readability, although one could argue about both. The usual advice is to use vector operations and apply() and its relatives. sapply(), vapply() and lapply() [&hellip;]","thumbnail_url":"https:\/\/blog.zhaw.ch\/datascience\/files\/2017\/06\/cumsum2-300x300.png"}