emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [Orgmode] Re: problem with babel and R


From: Eric Schulte
Subject: Re: [Orgmode] Re: problem with babel and R
Date: Wed, 18 Aug 2010 16:13:32 -0600
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)

Hi David,

"#+end_results: foo" (or some derivative syntax) sounds like a good
idea, I'll add it to the Babel task list.

Thanks -- Eric

David Hajage <address@hidden> writes:

> OK, I understand that using ":results org", the results is not altered,
> there is no post processing. But I don't want a post processing, I would
> like a way to tell babel where is the begining *and the end* of the output
> produces by a particular R source block. I think an "#+end_results: foo" at
> the end of the output could do the job. Then, the option "replace" could
> work in all situation, even if a blank line is inserted somewhere in the org
> output. No?
> David
>
>
> On Tue, Aug 17, 2010 at 17:15, Eric Schulte <address@hidden> wrote:
>
>> Hi David,
>>
>> David Hajage <address@hidden> writes:
>>
>> > Thank you very much for your answer.
>> >
>>
>> My pleasure
>>
>> >
>> > But when I run the following code directly into R, no extra lines is
>> >added
>> > by the ascii function:
>> >> library(ascii)
>> > Le chargement a nécessité le package : proto
>> >> options(asciiType = "org")
>> >> ascii(head(esoph)) # no extra line
>> > |   | agegp | alcgp     | tobgp    | ncases | ncontrols |
>> > |---+-------+-----------+----------+--------+-----------|
>> > | 1 | 25-34 | 0-39g/day | 0-9g/day | 0.00   | 40.00     |
>> > | 2 | 25-34 | 0-39g/day | 10-19    | 0.00   | 10.00     |
>> > | 3 | 25-34 | 0-39g/day | 20-29    | 0.00   | 6.00      |
>> > | 4 | 25-34 | 0-39g/day | 30+      | 0.00   | 5.00      |
>> > | 5 | 25-34 | 40-79     | 0-9g/day | 0.00   | 27.00     |
>> > | 6 | 25-34 | 40-79     | 10-19    | 0.00   | 7.00      |
>> >
>>
>> ah, my fault, this isn't an ascii issue.
>>
>> >
>> > In fact, the solution was to run 'library(ascii)' in another source
>> block.
>> > When I run only this:
>> >
>>
>> Thanks for pointing this out, I see what's happening now.
>>
>> The :results output header argument (see [1] for information on header
>> arguments) informs Org-mode to collect all of the output of the source
>> code block.  This means that when library(ascii) is run, an empty line
>> is collected and appended to the output.  Removing the "output" header
>> argument should fix this issue.
>>
>> My I ask why you are using the ascii package for simple table output?
>> It seems to me that this would be much simpler using the pure Org-mode
>> solution I suggested in my previous email.
>>
>> >
>> > #+begin_src R :session *R* :results output org replace
>> >   ascii(head(esoph))
>> > #+end_src
>> >
>> > #+results: foo
>> > |   | agegp | alcgp     |    tobgp | ncases | ncontrols |
>> > |---+-------+-----------+----------+--------+-----------|
>> > | 1 | 25-34 | 0-39g/day | 0-9g/day |   0.00 |     40.00 |
>> > | 2 | 25-34 | 0-39g/day |    10-19 |   0.00 |     10.00 |
>> > | 3 | 25-34 | 0-39g/day |    20-29 |   0.00 |      6.00 |
>> > | 4 | 25-34 | 0-39g/day |      30+ |   0.00 |      5.00 |
>> > | 5 | 25-34 | 40-79     | 0-9g/day |   0.00 |     27.00 |
>> > | 6 | 25-34 | 40-79     |    10-19 |   0.00 |      7.00 |
>> >
>> > Everything is then OK.
>> > I have no idea why "library(ascii)..." generates an extra empty line in
>> the
>> > results.
>> >
>> > If I understand, the results is all the text directly under "#+results:",
>> > until the first empty line. But what happens if the result contains empty
>> > lines? Here an example with ascii and Hmisc package:
>> >
>>
>> This is not quite right, see [2] for a discussion of results handling.
>> The "org" option to results is a special case in which no
>> post-processing of the results takes place, and the raw output is
>> inserted into the org-mode buffer.
>>
>> Under normal usage w/o this header argument, results are either tabular
>> or are textual.  If tabular a single table can easily be recognized and
>> handled, if textual they are normally enclosed in a block (example,
>> html, latex, etc...), the block then allows for empty lines while still
>> making it clear where the results end.
>>
>
>
>>
>> >
>> >> library(ascii)
>> >> library(Hmisc)
>> >> ascii(describe(esoph[, 1:3]))
>> > #+CAPTION: esoph[, 1:3]
>> > - 3 Variable
>> > - 88 Observations
>> >
>> > *agegp*
>> > | n  | missing | unique |
>> > | 88 | 0       | 6      |
>> >
>> > |           | 25-34 | 35-44 | 45-54 | 55-64 | 65-74 | 75+ |
>> > | Frequency | 15    | 15    | 16    | 16    | 15    | 11  |
>> > | %         | 17    | 17    | 18    | 18    | 17    | 12  |
>> >
>> > *alcgp*
>> > | n  | missing | unique |
>> > | 88 | 0       | 4      |
>> >
>> >  0-39g/day (23, 26%), 40-79 (23, 26%), 80-119 (21, 24%), 120+ (21, 24%)
>> >
>> > *tobgp*
>> > | n  | missing | unique |
>> > | 88 | 0       | 4      |
>> >
>> >  0-9g/day (24, 27%), 10-19 (24, 27%), 20-29 (20, 23%), 30+ (20, 23%)
>> >
>> > As you can see, describe() generate a description of my data, and ascii
>> > generate org-mode markup as result. The result contains empty rows. Since
>> > there is no special characters indicating the end of the results in
>> babel,
>> > replace option will not work in this case. Is there any workaround?
>> >
>>
>> When using ":results org" there is no workaround, as the explicit
>> purpose of this setting is for your results to be inserted directly into
>> the Org-mode buffer w/o any interpretation or alteration.
>>
>
>
>>
>> In general I would recommend keeping a 1-to-1 mapping between code
>> blocks and result items, which should resolve this issue.
>>
>> >
>> > Of course, ascii is not usefull in this case, but it can coerce into
>> > org-mode markup many other R objects (see my previous example and
>> > http://orgmode.org/worg/org-contrib/babel/examples/ascii.php)
>> >
>>
>> I see, that answers my question from above. Thanks
>>
>> Hope this helps -- Eric
>>
>> >
>> > David
>> >
>> >
>> > On Tue, Aug 17, 2010 at 15:57, Eric Schulte <address@hidden>
>> wrote:
>> >
>> >> Hi David,
>> >>
>> >> It seems that the problem here is in the ascii package.  It is inserting
>> >> an empty line at the beginning of your table, so that the table is not
>> >> snugly sitting under the #+results foo tag, because of this the table
>> >> isn't seen as results and is not replaced -- if you delete that space
>> >> then re-run the code block you'll notice that the table is replaced.
>> >>
>> >> Org-mode is very capable of inserting tabular data into Org-mode
>> >> documents without using the ascii package.  For example the following
>> >> would be a more idiomatic example of using Org-mode to create a table
>> >> from R code.
>> >>
>> >> --8<---------------cut here---------------start------------->8---
>> >> #+begin_src R
>> >>  numbers <- matrix(c(51,43,22,92,28,21,68,22,9),ncol=3,byrow=TRUE)
>> >>  numbers
>> >> #+end_src
>> >>
>> >> #+results:
>> >> | 51 | 43 | 22 |
>> >> | 92 | 28 | 21 |
>> >> | 68 | 22 |  9 |
>> >>
>> >> #+begin_src R :colnames yes
>> >>  numbers <- matrix(c(51,43,22,92,28,21,68,22,9),ncol=3,byrow=TRUE)
>> >>  numbers
>> >> #+end_src
>> >>
>> >> #+results:
>> >> | V1 | V2 | V3 |
>> >> |----+----+----|
>> >> | 51 | 43 | 22 |
>> >> | 92 | 28 | 21 |
>> >> | 68 | 22 |  9 |
>> >> --8<---------------cut here---------------end--------------->8---
>> >>
>> >> or applied to your example, the following code block should generate the
>> >> desired results.
>> >>
>> >> --8<---------------cut here---------------start------------->8---
>> >> #+srcname: foo
>> >> #+begin_src R :session *R*
>> >>   head(esoph)
>> >> #+end_src
>> >> --8<---------------cut here---------------end--------------->8---
>> >>
>> >> One last small note: the "replace" argument to :results is normally the
>> >> default value, and doesn't need to be explicitly added (although I can
>> >> see why you would have added it in this case since it wasn't working as
>> >> expected).
>> >>
>> >> Cheers -- Eric
>> >>
>> >> David Hajage <address@hidden> writes:
>> >>
>> >> > I tried the code with the last development version of org-mode:
>> >> >
>> >> > #+srcname: foo
>> >> > #+begin_src R :session *R* :results output org replace
>> >> >   library(ascii)
>> >> >   options(asciiType = "org")
>> >> >   ascii(head(esoph))
>> >> > #+end_src
>> >> >
>> >> > #+results: foo
>> >> >
>> >> >  |   | agegp | alcgp     | tobgp    | ncases | ncontrols |
>> >> > |---+-------+-----------+----------+--------+-----------|
>> >> > | 1 | 25-34 | 0-39g/day | 0-9g/day | 0.00   | 40.00     |
>> >> > | 2 | 25-34 | 0-39g/day | 10-19    | 0.00   | 10.00     |
>> >> > | 3 | 25-34 | 0-39g/day | 20-29    | 0.00   | 6.00      |
>> >> > | 4 | 25-34 | 0-39g/day | 30+      | 0.00   | 5.00      |
>> >> > | 5 | 25-34 | 40-79     | 0-9g/day | 0.00   | 27.00     |
>> >> > | 6 | 25-34 | 40-79     | 10-19    | 0.00   | 7.00      |
>> >> >
>> >> >  |   | agegp | alcgp     | tobgp    | ncases | ncontrols |
>> >> > |---+-------+-----------+----------+--------+-----------|
>> >> > | 1 | 25-34 | 0-39g/day | 0-9g/day | 0.00   | 40.00     |
>> >> > | 2 | 25-34 | 0-39g/day | 10-19    | 0.00   | 10.00     |
>> >> > | 3 | 25-34 | 0-39g/day | 20-29    | 0.00   | 6.00      |
>> >> > | 4 | 25-34 | 0-39g/day | 30+      | 0.00   | 5.00      |
>> >> > | 5 | 25-34 | 40-79     | 0-9g/day | 0.00   | 27.00     |
>> >> > | 6 | 25-34 | 40-79     | 10-19    | 0.00   | 7.00      |
>> >> >
>> >> > There is no more ">", but an extra space.
>> >> > But, the replace option doesn't work: results are still appended. I am
>> >> not
>> >> > an org-mode guru (far, far away), but I think this is because when
>> output
>> >> is
>> >> > org, there is no indication about the "end" of the results.
>> >> >
>> >> > David
>> >> >
>> >> >
>> >> > On Tue, Aug 17, 2010 at 10:17, David Hajage <address@hidden>
>> wrote:
>> >> >
>> >> >> Hello,
>> >> >>
>> >> >> I am trying to use babel with R. Here the code:
>> >> >>
>> >> >> #+srcname: foo
>> >> >> #+begin_src R :session *R* :results output org replace
>> >> >>   library(ascii)
>> >> >>   options(asciiType = "org")
>> >> >>   ascii(head(esoph))
>> >> >> #+end_src
>> >> >>
>> >> >> #+results: foo
>> >> >>
>> >> >> > |   | agegp | alcgp     | tobgp    | ncases | ncontrols |
>> >> >> |---+-------+-----------+----------+--------+-----------|
>> >> >> | 1 | 25-34 | 0-39g/day | 0-9g/day | 0.00   | 40.00     |
>> >> >> | 2 | 25-34 | 0-39g/day | 10-19    | 0.00   | 10.00     |
>> >> >> | 3 | 25-34 | 0-39g/day | 20-29    | 0.00   | 6.00      |
>> >> >> | 4 | 25-34 | 0-39g/day | 30+      | 0.00   | 5.00      |
>> >> >> | 5 | 25-34 | 40-79     | 0-9g/day | 0.00   | 27.00     |
>> >> >> | 6 | 25-34 | 40-79     | 10-19    | 0.00   | 7.00      |
>> >> >>
>> >> >> > |   | agegp | alcgp     | tobgp    | ncases | ncontrols |
>> >> >> |---+-------+-----------+----------+--------+-----------|
>> >> >> | 1 | 25-34 | 0-39g/day | 0-9g/day | 0.00   | 40.00     |
>> >> >> | 2 | 25-34 | 0-39g/day | 10-19    | 0.00   | 10.00     |
>> >> >> | 3 | 25-34 | 0-39g/day | 20-29    | 0.00   | 6.00      |
>> >> >> | 4 | 25-34 | 0-39g/day | 30+      | 0.00   | 5.00      |
>> >> >> | 5 | 25-34 | 40-79     | 0-9g/day | 0.00   | 27.00     |
>> >> >> | 6 | 25-34 | 40-79     | 10-19    | 0.00   | 7.00      |
>> >> >>
>> >> >> With org-mode 7.01g in emacs 23, there is two problems:
>> >> >>  - an extra ">" is added in the first line while output is "org"
>> >> >>  - when I run the code twice, the new results is appended, while I
>> have
>> >> the
>> >> >> option "replace".
>> >> >>
>> >> >> Is there any problem with my header?
>> >> >>
>> >> >> Thank you very much for your help.
>> >> >> David
>> >> >>
>> >> > _______________________________________________
>> >> > Emacs-orgmode mailing list
>> >> > Please use `Reply All' to send replies to the list.
>> >> > address@hidden
>> >> > http://lists.gnu.org/mailman/listinfo/emacs-orgmode
>> >>
>>
>> Footnotes:
>> [1]  http://orgmode.org/manual/Header-arguments.html#Header-arguments
>>
>> [2]
>> http://orgmode.org/manual/Results-of-evaluation.html#Results-of-evaluation
>>
>>
>> L'intégrité de ce message n'étant pas assurée sur Internet, l'Institut
>> Curie ne peut être tenu responsable de son contenu.
>> Si vous n'êtes pas destinataire de ce message confidentiel, merci de le
>> détruire et d'avertir immédiatement l'expéditeur.
>> Afin de contribuer au respect de l'environnement, merci de n'imprimer ce
>> mail qu'en cas de nécessité.
>>



reply via email to

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