26 March 2014

emacs, ESS, R, and knitr

Next post Previous post

# Using ESS with .Rmd files

For the past year or so, I’ve been using the amazingly full-featured Emacs Speaks Statistics package for my R coding. Though RStudio has a nice GUI and additional features, the benefit of being able to run ESS on a server1 through the terminal is a killer feature, as well as the fact that I can leverage all the other available emacs tools (such as emacs shell).

But a major frustration (and I’m not alone) has been that I’ve been unable to use ESS with Rmarkdown files. Thus, I’ve been reduced to the hack of coding a .R file, and symbolically linking a .Rmd file to it that I could knit.

As recommended on SO, I finally looked into using polymode. Lo-and-behold, it works!

Getting it to work wasn’t easy though, so here are my steps.

1. Polymode requires emacs 24.3 (documented in this issue. For Ubuntu, this can be installed using a PPA as described here

2. Install markdown-mode.el from Ubuntu package manager

sudo apt-get install emacs-goodies-el

3. Add the following code to .emacs file to associate markdown-mode with .text, .markdown and .md files

4. Restart emacs and open .md file. Confirm that markdown-mode works by trying one of the questionably-useful2 commands:

• C-c C-a l inserts an inline link of form [text](url)
• C-c C-i i inserts markup for inline image
• C-c C-s b inserts blockquote for active region (nice!!)
• C-c C-s p inserts code block for active region (nice!!)
1. Clone “polymode” from github repository.

git clone https://github.com/vitoshka/polymode.git

2. Add “polymode” and “polymode/modes” directories to emacs path in your .emacs:

3. Require polymode bundles in your .emacs

(require ’poly-R) (require ’poly-markdown)

4. Restart emacs and open a .Rmd file. All the beauty of ESS should now work!

A tangentially-related but useful tip: if you’re working on a remote server via ssh, to get plots to appear interactively on local desktop (when working on server), use:

ssh -X -t user@server

1. Yes, I know about RStudio server but haven’t the time or skilz to set it up.

2. Markdown is pretty-damn simple - no key strokes to remember, so why add them?