

{"id":6071,"date":"2017-06-10T09:32:48","date_gmt":"2017-06-10T14:32:48","guid":{"rendered":"https:\/\/rud.is\/b\/?p=6071"},"modified":"2018-03-10T07:54:26","modified_gmt":"2018-03-10T12:54:26","slug":"engaging-the-tidyverse-clean-slate-protocol","status":"publish","type":"post","link":"https:\/\/rud.is\/b\/2017\/06\/10\/engaging-the-tidyverse-clean-slate-protocol\/","title":{"rendered":"Engaging the tidyverse Clean Slate Protocol"},"content":{"rendered":"<p><a href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/06\/CSP.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"6072\" data-permalink=\"https:\/\/rud.is\/b\/2017\/06\/10\/engaging-the-tidyverse-clean-slate-protocol\/csp\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/06\/CSP.png?fit=1000%2C416&amp;ssl=1\" data-orig-size=\"1000,416\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"CSP\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/06\/CSP.png?fit=510%2C212&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/06\/CSP.png?resize=510%2C212&#038;ssl=1\" alt=\"\" width=\"510\" height=\"212\" class=\"aligncenter size-full wp-image-6072\" \/><\/a><\/p>\n<p>I caught the 0.7.0 release of <code>dplyr<\/code> on my home CRAN server early Friday morning and immediately set out to install it since I&#8217;m eager to finish up my <code>sergeant<\/code> package and get it on CRAN. &#8220;Tidyverse&#8221; upgrades aren&#8217;t trivial for me as I tinker quite a bit with the tidyverse and create packages that depend on various components. The <code>sergeant<\/code> package provides &#8212; amongst other things &#8212; a <code>dplyr<\/code> back-end for Apache Drill, so it has more tidyverse tendrils than other bits of code I maintain.<\/p>\n<p>macOS binaries weren&#8217;t available yet (it generally takes 24-48 hrs for that) so I did an <code>install.packages(\"dplyr\", type=\"source\")<\/code> and was immediately hit with gcc 7 compilation errors. This seemed odd, but switching back to <code>clang<\/code> worked fine.<\/p>\n<p>I, then, proceeded to run chunks in an Rmd I&#8217;m working on and hit &#8220;Encoding&#8221; errors on <code>mutate()<\/code> calls. Not having time to debug further I reverted to 0.5.0 of <code>dplyr<\/code> and went about my day and promised the tidyverse maintainers that I&#8217;d work on a reproducible example after work.<\/p>\n<p>I made R data files from the data frames that were tossing errors and extracted &amp; tweaked a code snippet that  consistently generated the error and created a rocker container on one of my linux boxes to validate that this was an error and a cross-platform one. The rocker container used a full fresh-from-source copy of the tidyverse including <code>dplyr<\/code> 0.7.0. The code worked and no error was generated, so I immediately suspected package rot on my main dev macOS box.<\/p>\n<p>Now, my situation is complicated by an insanely hasty migration to macOS 10.13\u03b21 (I refuse to use the Apple macOS catchy names anymore since the most recent one is just silly) and a move to the gcc 7 toolchain (initially prompted to both get <code>rJava<\/code> working nicely and reproduce some CRAN noted errors with some packages). Further complications were also created by many invocations of <code>install_github()<\/code> of various packages regularly overwriting bits of the tidyverse over the past few weeks since the R 3.4.0 release. In other words, the integrity of the &#8220;tidyverse&#8221; was in serious question on my system and it was time for the <a href=\"http:\/\/marvelcinematicuniverse.wikia.com\/wiki\/Clean_Slate_Protocol\">Clean Slate Protocol<\/a>.<\/p>\n<p>Rather than itemize package versions and surgically nipping and tucking, I opted to use <code>packrat<\/code> to get to my desired end-state of a full-integrity tidyverse install. There are many ways to do this. Feel free to &#8220;one-up&#8221; me and show your l33t method in the comments. This one will likely be accessible to most &#8212; if not all &#8212; R users.<\/p>\n<p>I started a new RStudio project in a new session and told it to use <code>packrat<\/code>. In the new project console, I did <code>install.packages(\"tidyverse\", type=\"source\")<\/code> and let it go for many minutes. I, then, navigated to the packrat subdirectory where the 3.4 package binaries are housed (just follow the project <code>packrat<\/code> tree down to the R version directory) and moved all 51 packages (yes, 51 O_o) to the main R library path (which you can figure out by running <code>.libPaths()<\/code> in any non-<code>packrat<\/code>-maintained project).<\/p>\n<p>After doing that, I fired up the originally failing Rmd and everything worked fine. ?<\/p>\n<p>I don&#8217;t do the Clean Slate Protocol too often (we all get to for new R dot-releases) but it came in handy this time. If you run into errors when trying to get the new <code>dplyr<\/code> working, you may benefit from the Clean Slate Protocol as well.<\/p>\n<p>If you haven&#8217;t seen the changes in 0.6.0\/0.7.0 you should <a href=\"https:\/\/blog.rstudio.com\/2017\/04\/13\/dplyr-0-6-0-coming-soon\/\">check them out<\/a> and give it a go.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I caught the 0.7.0 release of dplyr on my home CRAN server early Friday morning and immediately set out to install it since I&#8217;m eager to finish up my sergeant package and get it on CRAN. &#8220;Tidyverse&#8221; upgrades aren&#8217;t trivial for me as I tinker quite a bit with the tidyverse and create packages that [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":6072,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[779,780,91,797],"tags":[810],"class_list":["post-6071","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dplyr","category-macos","category-r","category-tidyverse","tag-post"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Engaging the tidyverse Clean Slate Protocol - rud.is<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/rud.is\/b\/2017\/06\/10\/engaging-the-tidyverse-clean-slate-protocol\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Engaging the tidyverse Clean Slate Protocol - rud.is\" \/>\n<meta property=\"og:description\" content=\"I caught the 0.7.0 release of dplyr on my home CRAN server early Friday morning and immediately set out to install it since I&#8217;m eager to finish up my sergeant package and get it on CRAN. &#8220;Tidyverse&#8221; upgrades aren&#8217;t trivial for me as I tinker quite a bit with the tidyverse and create packages that [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rud.is\/b\/2017\/06\/10\/engaging-the-tidyverse-clean-slate-protocol\/\" \/>\n<meta property=\"og:site_name\" content=\"rud.is\" \/>\n<meta property=\"article:published_time\" content=\"2017-06-10T14:32:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-03-10T12:54:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/06\/CSP.png?fit=1000%2C416&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"416\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"hrbrmstr\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"hrbrmstr\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/06\\\/10\\\/engaging-the-tidyverse-clean-slate-protocol\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/06\\\/10\\\/engaging-the-tidyverse-clean-slate-protocol\\\/\"},\"author\":{\"name\":\"hrbrmstr\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"headline\":\"Engaging the tidyverse Clean Slate Protocol\",\"datePublished\":\"2017-06-10T14:32:48+00:00\",\"dateModified\":\"2018-03-10T12:54:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/06\\\/10\\\/engaging-the-tidyverse-clean-slate-protocol\\\/\"},\"wordCount\":573,\"commentCount\":6,\"publisher\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"image\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/06\\\/10\\\/engaging-the-tidyverse-clean-slate-protocol\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/CSP.png?fit=1000%2C416&ssl=1\",\"keywords\":[\"post\"],\"articleSection\":[\"dplyr\",\"macOS\",\"R\",\"tidyverse\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/06\\\/10\\\/engaging-the-tidyverse-clean-slate-protocol\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/06\\\/10\\\/engaging-the-tidyverse-clean-slate-protocol\\\/\",\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/06\\\/10\\\/engaging-the-tidyverse-clean-slate-protocol\\\/\",\"name\":\"Engaging the tidyverse Clean Slate Protocol - rud.is\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/06\\\/10\\\/engaging-the-tidyverse-clean-slate-protocol\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/06\\\/10\\\/engaging-the-tidyverse-clean-slate-protocol\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/CSP.png?fit=1000%2C416&ssl=1\",\"datePublished\":\"2017-06-10T14:32:48+00:00\",\"dateModified\":\"2018-03-10T12:54:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/06\\\/10\\\/engaging-the-tidyverse-clean-slate-protocol\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/06\\\/10\\\/engaging-the-tidyverse-clean-slate-protocol\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/06\\\/10\\\/engaging-the-tidyverse-clean-slate-protocol\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/CSP.png?fit=1000%2C416&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/CSP.png?fit=1000%2C416&ssl=1\",\"width\":1000,\"height\":416},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/06\\\/10\\\/engaging-the-tidyverse-clean-slate-protocol\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/rud.is\\\/b\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Engaging the tidyverse Clean Slate Protocol\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#website\",\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/\",\"name\":\"rud.is\",\"description\":\"&quot;In God we trust. All others must bring data&quot;\",\"publisher\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/rud.is\\\/b\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\",\"name\":\"hrbrmstr\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\",\"width\":460,\"height\":460,\"caption\":\"hrbrmstr\"},\"logo\":{\"@id\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\"},\"description\":\"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7\",\"sameAs\":[\"http:\\\/\\\/rud.is\"],\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/author\\\/hrbrmstr\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Engaging the tidyverse Clean Slate Protocol - rud.is","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/rud.is\/b\/2017\/06\/10\/engaging-the-tidyverse-clean-slate-protocol\/","og_locale":"en_US","og_type":"article","og_title":"Engaging the tidyverse Clean Slate Protocol - rud.is","og_description":"I caught the 0.7.0 release of dplyr on my home CRAN server early Friday morning and immediately set out to install it since I&#8217;m eager to finish up my sergeant package and get it on CRAN. &#8220;Tidyverse&#8221; upgrades aren&#8217;t trivial for me as I tinker quite a bit with the tidyverse and create packages that [&hellip;]","og_url":"https:\/\/rud.is\/b\/2017\/06\/10\/engaging-the-tidyverse-clean-slate-protocol\/","og_site_name":"rud.is","article_published_time":"2017-06-10T14:32:48+00:00","article_modified_time":"2018-03-10T12:54:26+00:00","og_image":[{"width":1000,"height":416,"url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/06\/CSP.png?fit=1000%2C416&ssl=1","type":"image\/png"}],"author":"hrbrmstr","twitter_card":"summary_large_image","twitter_misc":{"Written by":"hrbrmstr","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/rud.is\/b\/2017\/06\/10\/engaging-the-tidyverse-clean-slate-protocol\/#article","isPartOf":{"@id":"https:\/\/rud.is\/b\/2017\/06\/10\/engaging-the-tidyverse-clean-slate-protocol\/"},"author":{"name":"hrbrmstr","@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"headline":"Engaging the tidyverse Clean Slate Protocol","datePublished":"2017-06-10T14:32:48+00:00","dateModified":"2018-03-10T12:54:26+00:00","mainEntityOfPage":{"@id":"https:\/\/rud.is\/b\/2017\/06\/10\/engaging-the-tidyverse-clean-slate-protocol\/"},"wordCount":573,"commentCount":6,"publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"image":{"@id":"https:\/\/rud.is\/b\/2017\/06\/10\/engaging-the-tidyverse-clean-slate-protocol\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/06\/CSP.png?fit=1000%2C416&ssl=1","keywords":["post"],"articleSection":["dplyr","macOS","R","tidyverse"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rud.is\/b\/2017\/06\/10\/engaging-the-tidyverse-clean-slate-protocol\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rud.is\/b\/2017\/06\/10\/engaging-the-tidyverse-clean-slate-protocol\/","url":"https:\/\/rud.is\/b\/2017\/06\/10\/engaging-the-tidyverse-clean-slate-protocol\/","name":"Engaging the tidyverse Clean Slate Protocol - rud.is","isPartOf":{"@id":"https:\/\/rud.is\/b\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rud.is\/b\/2017\/06\/10\/engaging-the-tidyverse-clean-slate-protocol\/#primaryimage"},"image":{"@id":"https:\/\/rud.is\/b\/2017\/06\/10\/engaging-the-tidyverse-clean-slate-protocol\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/06\/CSP.png?fit=1000%2C416&ssl=1","datePublished":"2017-06-10T14:32:48+00:00","dateModified":"2018-03-10T12:54:26+00:00","breadcrumb":{"@id":"https:\/\/rud.is\/b\/2017\/06\/10\/engaging-the-tidyverse-clean-slate-protocol\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rud.is\/b\/2017\/06\/10\/engaging-the-tidyverse-clean-slate-protocol\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/rud.is\/b\/2017\/06\/10\/engaging-the-tidyverse-clean-slate-protocol\/#primaryimage","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/06\/CSP.png?fit=1000%2C416&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/06\/CSP.png?fit=1000%2C416&ssl=1","width":1000,"height":416},{"@type":"BreadcrumbList","@id":"https:\/\/rud.is\/b\/2017\/06\/10\/engaging-the-tidyverse-clean-slate-protocol\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rud.is\/b\/"},{"@type":"ListItem","position":2,"name":"Engaging the tidyverse Clean Slate Protocol"}]},{"@type":"WebSite","@id":"https:\/\/rud.is\/b\/#website","url":"https:\/\/rud.is\/b\/","name":"rud.is","description":"&quot;In God we trust. All others must bring data&quot;","publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rud.is\/b\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886","name":"hrbrmstr","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","width":460,"height":460,"caption":"hrbrmstr"},"logo":{"@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1"},"description":"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7","sameAs":["http:\/\/rud.is"],"url":"https:\/\/rud.is\/b\/author\/hrbrmstr\/"}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/06\/CSP.png?fit=1000%2C416&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p23idr-1zV","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":10298,"url":"https:\/\/rud.is\/b\/2018\/05\/19\/create-code-metrics-with-cloc\/","url_meta":{"origin":6071,"position":0},"title":"Create Code Metrics with cloc","author":"hrbrmstr","date":"2018-05-19","format":false,"excerpt":"The cloc Perl script (yes, Perl!) by Al Danial (https:\/\/github.com\/AlDanial\/cloc) has been one of the go-to tools for generating code metrics. Given a single file, directory tree, archive, or git repo, cloc can speedily give you metrics on the count of blank lines, comment lines, and physical lines of source\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":11921,"url":"https:\/\/rud.is\/b\/2019\/02\/17\/conquering-caffeinated-amazon-athena-with-the-metis-trio-of-packages\/","url_meta":{"origin":6071,"position":1},"title":"Conquering Caffeinated Amazon Athena with the metis Trio of Packages","author":"hrbrmstr","date":"2019-02-17","format":false,"excerpt":"I must preface this post with the posit that if you're doing anything interactive() with Amazon Athena you should seriously consider just using their free ODBC drivers as it's the easiest way to wire them up to R DBI- and tidyverse-wise. I've said as much in previous posts. Drop a\u2026","rel":"","context":"In &quot;athena&quot;","block_context":{"text":"athena","link":"https:\/\/rud.is\/b\/category\/athena\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":6111,"url":"https:\/\/rud.is\/b\/2017\/07\/17\/ten-hut-the-apache-drill-r-interface-package-sergeant-is-now-on-cran\/","url_meta":{"origin":6071,"position":2},"title":"Ten-HUT! The Apache Drill R interface package \u2014\u00a0sergeant \u2014\u00a0is now on CRAN","author":"hrbrmstr","date":"2017-07-17","format":false,"excerpt":"I'm extremely pleased to announce that the sergeant package is now on CRAN or will be hitting your local CRAN mirror soon. sergeant provides JDBC, DBI and dplyr\/dbplyr interfaces to Apache Drill. I've also wrapped a few goodies into the dplyr custom functions that work with Drill and if you\u2026","rel":"","context":"In &quot;Apache Drill&quot;","block_context":{"text":"Apache Drill","link":"https:\/\/rud.is\/b\/category\/apache-drill\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":10834,"url":"https:\/\/rud.is\/b\/2018\/05\/29\/the-fix-is-in-finding-infix-functions-inside-contributed-r-package-utilities-files\/","url_meta":{"origin":6071,"position":3},"title":"The Fix Is In: Finding infix functions inside contributed R package &#8220;utilities&#8221; files","author":"hrbrmstr","date":"2018-05-29","format":false,"excerpt":"Regular readers will recall the \"utility belt\" post from back in April of this year. This is a follow-up to a request made asking for a list of all the % infix functions in those files. We're going to: collect up all of the sources parse them find all the\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4753,"url":"https:\/\/rud.is\/b\/2016\/12\/20\/sergeant-a-r-boot-camp-for-apache-drill\/","url_meta":{"origin":6071,"position":4},"title":"sergeant : An R Boot Camp for Apache Drill","author":"hrbrmstr","date":"2016-12-20","format":false,"excerpt":"I recently mentioned that I've been working on a development version of an Apache Drill R package called sergeant. Here's a lifted \"TLDR\" on Drill: Drill supports a variety of NoSQL databases and file systems, including HBase, MongoDB, MapR-DB, HDFS, MapR-FS, Amazon S3, Azure Blob Storage, Google Cloud Storage, Swift,\u2026","rel":"","context":"In &quot;Apache Drill&quot;","block_context":{"text":"Apache Drill","link":"https:\/\/rud.is\/b\/category\/apache-drill\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":12138,"url":"https:\/\/rud.is\/b\/2019\/04\/10\/lost-in-sql-translation-charting-dbplyr-mapped-sql-function-support-across-all-backends\/","url_meta":{"origin":6071,"position":5},"title":"Lost In [SQL] Translation: Charting d[b]plyr Mapped SQL Function Support Across All Backends","author":"hrbrmstr","date":"2019-04-10","format":false,"excerpt":"Like more posts than I care to admit, this one starts innocently enough with a tweet by @gshotwell: Is there a reference document somewhere of which dplyr commands work on various database backends? #rstats\u2014 Gordon Shotwell (@gshotwell) April 9, 2019 Since I use at least 4 different d[b]plyr backends every\u2026","rel":"","context":"In &quot;dplyr&quot;","block_context":{"text":"dplyr","link":"https:\/\/rud.is\/b\/category\/dplyr\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/04\/backend-heatmap.jpg?fit=1200%2C659&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/04\/backend-heatmap.jpg?fit=1200%2C659&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/04\/backend-heatmap.jpg?fit=1200%2C659&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/04\/backend-heatmap.jpg?fit=1200%2C659&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/04\/backend-heatmap.jpg?fit=1200%2C659&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/6071","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/comments?post=6071"}],"version-history":[{"count":0,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/6071\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media\/6072"}],"wp:attachment":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media?parent=6071"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/categories?post=6071"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/tags?post=6071"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}