emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Converting Org to Sweave (*.Rnw)


From: Julian Gehring
Subject: Re: [O] Converting Org to Sweave (*.Rnw)
Date: Tue, 17 Jul 2012 19:23:15 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120615 Thunderbird/13.0.1

Hi Chuck,

thanks, what you describe seems to me like a already quite elaborated solution. I would be very interested in your existing implementation for this.

As you mentioned, there will probably have to be a trade-off between the syntax/functionality of Org-mode/babel and Sweave. But already a solution being able to handle to obvious cases of header argumnets would be step forward in bringing Org-mode even closer to R Sweave.


Best
Julian





























































On 07/17/2012 06:05 PM, address@hidden wrote:
Julian Gehring <address@hidden> writes:

Hi,

is there a way to convert Org-mode files with R code blocks to the
Sweave ('*.Rnw') [1] file format or has anyone planned to work on
this?

First, there is this thread:

        http://comments.gmane.org/gmane.emacs.orgmode/7931

and then there is this

     http://yihui.name/knitr/demo/org/

====

But I wanted more, and I think the new exporter provides some awesome
possibilities, so...

I have put together a rudimentary exporter for Sweave and for brew style
chunks and hope to have several of the knitr chunk flavors supported
soon. I've not looked closely, but I think pander can be supported, too.

The basic idea is to use the new export engine. See

     http://orgmode.org/worg/dev/org-export-reference.html

for background.

The e-latex, e-html, and other modes are used as parent backends and
e-latex-rnw, e-html-brew, etc are *derived* backends. It is pretty easy
to hitch a ride on the work done to make a parent backend and then add a
minimal definition of the chunk formatting.

The only tricky bit is getting Babel to help in the process, but not
interfere. I want Babel to porcess non-R src blocks and clean out R
#+RESULTS blocks, but not strip out the header args, as these may be
wanted (as you suggest below) to inform the chunk arguments. I've
managed this by advise'ing org-babel-exp-do-export to do special
handling of R src blocks.

I've not yet delved into translating the headers into code chunk
arguments. Some like 'width' seem pretty obvious. Others like the
:exports + :results translation may take some thought. And there are
some idioms in Sweave and kntir that have not corresponding idiom in org
(which is a strong motive for doing this work) like 'dev' in knitr as
well as ':cache yes' versus 'cache=T', which are false cognates, so to
speak

So far, what I've done is do add a header arg like this:

    Here is an inline chunk: src_R{ rnorm(1) } which the brew export
    renders as <%= rnorm(1) -%> (i.e. print the result, but do not place
    a line break after the result), making a non-printing version of this
    is done by using this src_R[ :ravel <% -%> ]{ rnorm(1) }, which
    renders as <% rnorm(1) -%>.

or this

:   #+name: aCachedChunk
:   #+begin_src R :ravel cache=T
:   x <- rnorm(1e7)
:   #+end_src

which is rendered as

<<aCachedChunk, cache=T>>=
x <- rnorm(1e7)
@ %def

when using the Sweave style exporters.

However, Nicolas *just* added support for #+ATTR_SOMETHING, where
SOMETHING is a user defined key. And I incline to the view that using
something like

:   #+attr_ravel: cache=T
:   #+name: aCachedChunk
:   #+begin_src R
:   x <- rnorm(1e7)
:   #+end_src

might be preferred.

Anyway, I'll try to get a version up where you can have a look at it
sometime today.

I am keen to collaborate on this.

Chuck



Sweave is heavily used in the R community in terms of literate
programming, and has a tight integration into current package building
workflows.  Essentially, the file format is a latex document, with
designated code chunks.

Since Org/Org-babel offers a very similar feature set, and already
covers the export to latex, I was wondering whether anyone is working
on some code that would rewrite the code block headers in the export?
In the R community, I have seen a lot of interest in such an exporter,
that would allow to write the documentation in Org itself and later
export it to several backends, including Sweave to integrate it in the
R package.

If anyone has some comments regarding this or is interested in working
on this, please let me know.  My colleagues and I would be very
interested in contributing in projects in this direction.


Best
Julian


[1] http://en.wikipedia.org/wiki/Sweave










reply via email to

[Prev in Thread] Current Thread [Next in Thread]