Playing with R and org-mode

Table of Contents

Sitemap

---> misc
| ---> 2016
| ---> 2015
| ---> 2014
| ---> 2013
| ---> 2012
`--> Agenda

Playing with babel

This test has been inspired by http://orgmode.org/worg/org-contrib/babel/examples/foo.html

2+2
4

Let's generate some data

n <- 50
x <- seq(1, n)
a.true <- 3
b.true <- 1.5
y.true <- a.true + b.true * x
s.true <- 17.3
y <- y.true + s.true * rnorm(n)
out1 <- lm(y ~ x)

Let's look at the summary of the linear regression

Call:
lm(formula = y ~ x)

Residuals:
    Min      1Q  Median      3Q     Max 
-32.131  -9.722  -2.701  10.029  40.094 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   1.1789     4.2621   0.277    0.783    
x             1.5420     0.1455  10.601 3.62e-14 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 14.84 on 48 degrees of freedom
Multiple R-squared: 0.7007,	Adjusted R-squared: 0.6945 
F-statistic: 112.4 on 1 and 48 DF,  p-value: 3.621e-14

And now, let's plot all this:

  plot(x, y)
  abline(out1)

fig1.png

Sweet! Let's try a more complicated one, just for the fun:

library(ggplot2) 
data(diamonds) 
dsmall <-diamonds[sample(nrow(diamonds), 100), ] 
ggplot(data = dsmall, aes(x=carat, y=price, color=color, shape=cut, size=carat)) + geom_point()

fig2.png

Issues

  • This org file was originally in my journal where one of the previous entry is configured to use beamer. Whatever I tried, the LaTeX export keeps using beamer. Isn't it possible to have in the same org files some part that are exported in beamer and others that are exported with article? It seems I can override TITLE and AUTHOR but not LaTeX_CLASS. The html export works as a charm though so whatever….
  • The file/figure export mechanism presented in the previous link is completely broken. But the one explained in https://github.com/erikriverson/org-mode-R-tutorial/blob/master/org-mode-R-tutorial.org works like a charm. The correct syntax for simple blocks is thus:

    #+BEGIN_SRC R :results output :exports both :session
      n <- 50
      x <- seq(1, n)
      a.true <- 3
    #+END_SRC
    

    and for images:

    #+BEGIN_SRC R :results output graphics :file fig1.png :session :exports both
      plot(x, y)
      abline(out1)
    #+END_SRC
    

    Then all you have to do is C-c C-c in the block to evaluate it. For the moment, I just finally got it working and I have to say I still haven't completely undertood how these :results and :exports really work.

  • Objects are thrown away from one block to another. I had to add a :session at the end of every block, which is a pain. Actually, I later realized that in already had set up a shortcu C-S-F4 that inserts an org-skeleton with default behavior for babel with R, including a global session flag.

    #+BABEL: :session *R* :cache yes :results output graphics :exports both :tangle yes
    

    Unfortunately, it does not seem to work (maybe syntax has changed) and I still need to add these :session flags everywhere…

  • This webpage also indicates a trick for inlining images that is just amazing! So when I open the org file in emacs it's almost wysiwyg! ;)

    (add-hook 'org-babel-after-execute-hook 'org-display-inline-images) 
    (add-hook 'org-mode-hook 'org-display-inline-images)
    

Entered on [2013-03-17 dim. 08:32]