From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Eric Schulte" Subject: Re: Re: problem with babel and R Date: Tue, 17 Aug 2010 09:15:36 -0600 Message-ID: <87pqxhnucn.fsf@gmail.com> References: <87tymtnxzi.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from [140.186.70.92] (port=54350 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OlNtB-0002HR-1z for emacs-orgmode@gnu.org; Tue, 17 Aug 2010 11:15:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OlNt7-0002j2-7A for emacs-orgmode@gnu.org; Tue, 17 Aug 2010 11:15:45 -0400 Received: from mail-gx0-f169.google.com ([209.85.161.169]:57126) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OlNt7-0002iy-1x for emacs-orgmode@gnu.org; Tue, 17 Aug 2010 11:15:41 -0400 Received: by gxk9 with SMTP id 9so833921gxk.0 for ; Tue, 17 Aug 2010 08:15:40 -0700 (PDT) In-Reply-To: (David Hajage's message of "Tue, 17 Aug 2010 16:41:09 +0200") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: David Hajage Cc: emacs-orgmode@gnu.org 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=C3=A9cessit=C3=A9 le package : proto >> options(asciiType =3D "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 t= he > 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 wrot= e: > >> 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=3D3,byrow=3DTRUE) >> 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=3D3,byrow=3DTRUE) >> 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 =3D "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 out= put >> 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 =3D "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 ha= ve >> 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:=20 [1] http://orgmode.org/manual/Header-arguments.html#Header-arguments [2] http://orgmode.org/manual/Results-of-evaluation.html#Results-of-evalua= tion