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 wrote: > Hi David, > > David Hajage 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 > 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 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 > 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. > >> > Emacs-orgmode@gnu.org > >> > 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é. >