ggloop is an R package which creates multiple ggplot2 plots with a single function call. The main function, ggloop(), accepts vectors of aesthetics via aes_loop(), which allows ggloop() to generate multiple plots. To read more about this package (which is available on CRAN), you can check out the package website which was built with pkgdown (formerly […]Read more "ggloop: An R package to create multiple ggplot2 plots"
I began programming in R because I wanted to escape Excel. However, a year later after discovering R and leaving Excel, I have returned – just to prove it could be done.Read more "Misusing R: Writing An Excel VLOOKUP Equivalent"
If you ever find yourself trying to align assignment operators for a chunk of code in RStudio, then you are in luck: Align Assign makes this as easy as a mouse-click or a keyboard-shortcut. What? Align Assign is an RStudio addin which does a straight, no-frills alignment of every first-occurring assignment operator within a highlighted […]Read more "Align Assign: RStudio addin to align assignment operators"
How to automate web-scrapping .R files with R CMD BATCH and the Windows Task Scheduler.Read more "Simple automated web-scraping with R CMD BATCH and Task Scheduler"
I recently discovered aliases in git – very useful. So far my favorites have been log commands. The first alias below will create a decorated (shows refs) oneline log summary along with an ascii graph of the branch history. The second will show the author’s relative date, the hash id (sha1), and the subject (message) […]Read more "Git alias: abbreviate your commands and options"
Recently, while working on a function inside my ggloop package, I came across an unusual problem. There is a function which is called as an argument inside another function. It goes something like this: Because inner.fun() is passed as an argument to outer.fun(), it has the same calling environment as outer.fun(). So, if I want […]Read more "Overcoming environment obstacles in R"
Intro I’ve been working on an R package, ggloop, for the past month, and with every function I write I am realizing the need for utility functions. These are functions which do one thing but do it very well. My latest utility function, list.pos(), retrieves the position of a character string within a list. Internals […]Read more "Utility functions"