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: David Hajage
Subject: Re: [Orgmode] Re: problem with babel and R
Date: Wed, 18 Aug 2010 08:53:33 +0200

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
>>

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]