* problem with babel and R @ 2010-08-17 8:17 David Hajage 2010-08-17 12:01 ` David Hajage 0 siblings, 1 reply; 13+ messages in thread From: David Hajage @ 2010-08-17 8:17 UTC (permalink / raw To: emacs-orgmode [-- Attachment #1.1: Type: text/plain, Size: 1450 bytes --] 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 [-- Attachment #1.2: Type: text/html, Size: 4772 bytes --] [-- Attachment #2: Type: text/plain, Size: 201 bytes --] _______________________________________________ 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 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: problem with babel and R 2010-08-17 8:17 problem with babel and R David Hajage @ 2010-08-17 12:01 ` David Hajage 2010-08-17 13:57 ` Eric Schulte 0 siblings, 1 reply; 13+ messages in thread From: David Hajage @ 2010-08-17 12:01 UTC (permalink / raw To: emacs-orgmode [-- Attachment #1.1: Type: text/plain, Size: 3020 bytes --] 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 <dhajage@gmail.com> 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 > [-- Attachment #1.2: Type: text/html, Size: 6005 bytes --] [-- Attachment #2: Type: text/plain, Size: 201 bytes --] _______________________________________________ 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 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Re: problem with babel and R 2010-08-17 12:01 ` David Hajage @ 2010-08-17 13:57 ` Eric Schulte 2010-08-17 14:41 ` David Hajage 0 siblings, 1 reply; 13+ messages in thread From: Eric Schulte @ 2010-08-17 13:57 UTC (permalink / raw To: David Hajage; +Cc: emacs-orgmode 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 <dhajage@gmail.com> 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 <dhajage@gmail.com> 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 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Re: problem with babel and R 2010-08-17 13:57 ` Eric Schulte @ 2010-08-17 14:41 ` David Hajage 2010-08-17 15:15 ` Eric Schulte [not found] ` <1668ca$1pq4c@mail.curie.net> 0 siblings, 2 replies; 13+ messages in thread From: David Hajage @ 2010-08-17 14:41 UTC (permalink / raw To: Eric Schulte; +Cc: emacs-orgmode [-- Attachment #1.1: Type: text/plain, Size: 9373 bytes --] Thank you very much for your answer. 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 | To see what hapens, I tried this: --8<---------------cut here---------------start------------->8--- #+srcname: foo #+begin_src R :session *R* :results output org replace library(ascii) options(asciiType = "org") head(esoph) #+end_src #+results: foo agegp alcgp tobgp ncases ncontrols 1 25-34 0-39g/day 0-9g/day 0 40 2 25-34 0-39g/day 10-19 0 10 3 25-34 0-39g/day 20-29 0 6 4 25-34 0-39g/day 30+ 0 5 5 25-34 40-79 0-9g/day 0 27 6 25-34 40-79 10-19 0 7 --8<---------------cut here---------------end--------------->8--- The extra line is still there. In fact, the solution was to run 'library(ascii)' in another source block. When I run only this: --8<---------------cut here---------------start------------->8--- #+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 | --8<---------------cut here---------------end------------->8--- 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: --8<---------------cut here---------------start------------->8--- > 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%) --8<---------------cut here---------------end--------------->8--- 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? 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) David On Tue, Aug 17, 2010 at 15:57, Eric Schulte <schulte.eric@gmail.com> 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 <dhajage@gmail.com> 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 <dhajage@gmail.com> 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 > [-- Attachment #1.2: Type: text/html, Size: 19052 bytes --] [-- Attachment #2: Type: text/plain, Size: 201 bytes --] _______________________________________________ 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 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Re: problem with babel and R 2010-08-17 14:41 ` David Hajage @ 2010-08-17 15:15 ` Eric Schulte 2010-08-17 17:07 ` Tom Short [not found] ` <1668ca$1pq4c@mail.curie.net> 1 sibling, 1 reply; 13+ messages in thread From: Eric Schulte @ 2010-08-17 15:15 UTC (permalink / raw To: David Hajage; +Cc: emacs-orgmode Hi David, David Hajage <dhajage@gmail.com> 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 <schulte.eric@gmail.com> 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 <dhajage@gmail.com> 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 <dhajage@gmail.com> 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 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: problem with babel and R 2010-08-17 15:15 ` Eric Schulte @ 2010-08-17 17:07 ` Tom Short 0 siblings, 0 replies; 13+ messages in thread From: Tom Short @ 2010-08-17 17:07 UTC (permalink / raw To: emacs-orgmode Eric Schulte <schulte.eric <at> gmail.com> writes: > 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. > I've run into this when trying to generate custom results in org format (could be paragraphs with links or headings). It'd help a lot to add something like "#+end_results:" at the end of raw output, so org-babel knows what to replace. - Tom ^ permalink raw reply [flat|nested] 13+ messages in thread
[parent not found: <1668ca$1pq4c@mail.curie.net>]
* Re: Re: problem with babel and R [not found] ` <1668ca$1pq4c@mail.curie.net> @ 2010-08-18 6:53 ` David Hajage 2010-08-18 22:13 ` Eric Schulte 0 siblings, 1 reply; 13+ messages in thread From: David Hajage @ 2010-08-18 6:53 UTC (permalink / raw To: Eric Schulte; +Cc: emacs-orgmode [-- Attachment #1.1: Type: text/plain, Size: 12095 bytes --] 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 <schulte.eric@gmail.com> wrote: > Hi David, > > David Hajage <dhajage@gmail.com> 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 <schulte.eric@gmail.com> > 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 <dhajage@gmail.com> 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 <dhajage@gmail.com> > 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é. > [-- Attachment #1.2: Type: text/html, Size: 16111 bytes --] [-- Attachment #2: Type: text/plain, Size: 201 bytes --] _______________________________________________ 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 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Re: problem with babel and R 2010-08-18 6:53 ` David Hajage @ 2010-08-18 22:13 ` Eric Schulte 2010-08-26 16:10 ` Eric Schulte 0 siblings, 1 reply; 13+ messages in thread From: Eric Schulte @ 2010-08-18 22:13 UTC (permalink / raw To: David Hajage; +Cc: emacs-orgmode 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 <dhajage@gmail.com> 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 <schulte.eric@gmail.com> wrote: > >> Hi David, >> >> David Hajage <dhajage@gmail.com> 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 <schulte.eric@gmail.com> >> 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 <dhajage@gmail.com> 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 <dhajage@gmail.com> >> 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é. >> ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Re: problem with babel and R 2010-08-18 22:13 ` Eric Schulte @ 2010-08-26 16:10 ` Eric Schulte 2010-08-26 20:20 ` David Hajage 0 siblings, 1 reply; 13+ messages in thread From: Eric Schulte @ 2010-08-26 16:10 UTC (permalink / raw To: David Hajage; +Cc: emacs-orgmode Hi, A fix to this issue has been pushed up to the repository. As can now be read in the documentation of the `org-babel-insert-result' function [1], there is now a subtle distinction between ":results org" and ":results raw", where ":results org" will wrap code block results in a "begin_src org" block. The block wrapper makes it possible for the entirety of the results to be located and removed by Babel upon code block re-evaluation. In addition a new ob-org.el file has been added providing support for evaluation of Org-mode blocks. With this new language support loaded the above technique becomes a working replacement for ":results raw" allowing the body of the org code block to be interpreted as inline org-mode text on export. This is done through some non-standard default header arguments described in the recent commit message (see [2]) Best -- Eric "Eric Schulte" <schulte.eric@gmail.com> writes: > 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 <dhajage@gmail.com> 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 <schulte.eric@gmail.com> wrote: >> >>> Hi David, >>> >>> David Hajage <dhajage@gmail.com> 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 <schulte.eric@gmail.com> >>> 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 <dhajage@gmail.com> 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 <dhajage@gmail.com> >>> 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é. >>> Footnotes: [1] ,----[org-babel-insert-result] | org-babel-insert-result is a Lisp function in `ob.el'. | | (org-babel-insert-result RESULT &optional RESULT-PARAMS INFO HASH | INDENT LANG) | | Insert RESULT into the current buffer. | By default RESULT is inserted after the end of the | current source block. With optional argument RESULT-PARAMS | controls insertion of results in the org-mode file. | RESULT-PARAMS can take the following values... | | replace - (default option) insert results after the source block | replacing any previously inserted results | | silent -- no results are inserted | | file ---- the results are interpreted as a file path, and are | inserted into the buffer using the Org-mode file syntax | | raw ----- results are added directly to the org-mode file. This | is a good option if you code block will output org-mode | formatted text. | | org ----- this is the same as the 'raw' option | | html ---- results are added inside of a #+BEGIN_HTML block. This | is a good option if you code block will output html | formatted text. | | latex --- results are added inside of a #+BEGIN_LATEX block. | This is a good option if you code block will output | latex formatted text. | | code ---- the results are extracted in the syntax of the source | code of the language being evaluated and are added | inside of a #+BEGIN_SRC block with the source-code | language set appropriately. Note this relies on the | optional LANG argument. | | [back] `---- [2] ,---- | ob-org has two non-standard header arguments in that it exports it's | results by default and the result type defaults to raw, this ensures | that the body of a begin_src org block exports transparently. | | This is a breaking change in that if you are currently using org | code blocks to export org-fontified code you will have to set the | ":exports" header argument for org-mode blocks to "code" on a block, | file, language or system-wide basis. `---- ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Re: problem with babel and R 2010-08-26 16:10 ` Eric Schulte @ 2010-08-26 20:20 ` David Hajage 2010-08-26 21:51 ` David Hajage 0 siblings, 1 reply; 13+ messages in thread From: David Hajage @ 2010-08-26 20:20 UTC (permalink / raw To: Eric Schulte; +Cc: emacs-orgmode [-- Attachment #1.1: Type: text/plain, Size: 17936 bytes --] I am so sorry to bother you again, but I must miss something. When I write: #+begin_src R :results output org :exports both library(ascii) options(asciiType = "org") ascii(head(esoph)) #+end_src The results is: #+results: #+BEGIN_SRC org | | 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 | #+END_SRC OK, the result is surrounded by BEGIN_SRC org/END_SRC. But when I export this, the results is exported as fontified org code. What should I do to have this result interpreted as org markup? David On Thu, Aug 26, 2010 at 18:10, Eric Schulte <schulte.eric@gmail.com> wrote: > Hi, > > A fix to this issue has been pushed up to the repository. As can now be > read in the documentation of the `org-babel-insert-result' function [1], > there is now a subtle distinction between ":results org" and ":results > raw", where ":results org" will wrap code block results in a "begin_src > org" block. The block wrapper makes it possible for the entirety of the > results to be located and removed by Babel upon code block > re-evaluation. > > In addition a new ob-org.el file has been added providing support for > evaluation of Org-mode blocks. With this new language support loaded > the above technique becomes a working replacement for ":results raw" > allowing the body of the org code block to be interpreted as inline > org-mode text on export. This is done through some non-standard default > header arguments described in the recent commit message (see [2]) > > Best -- Eric > > "Eric Schulte" <schulte.eric@gmail.com> writes: > > > 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 <dhajage@gmail.com> 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 <schulte.eric@gmail.com> > wrote: > >> > >>> Hi David, > >>> > >>> David Hajage <dhajage@gmail.com> 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 <schulte.eric@gmail.com> > >>> 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 <dhajage@gmail.com> 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 <dhajage@gmail.com> > >>> 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é. > >>> > > Footnotes: > [1] > ,----[org-babel-insert-result] > | org-babel-insert-result is a Lisp function in `ob.el'. > | > | (org-babel-insert-result RESULT &optional RESULT-PARAMS INFO HASH > | INDENT LANG) > | > | Insert RESULT into the current buffer. > | By default RESULT is inserted after the end of the > | current source block. With optional argument RESULT-PARAMS > | controls insertion of results in the org-mode file. > | RESULT-PARAMS can take the following values... > | > | replace - (default option) insert results after the source block > | replacing any previously inserted results > | > | silent -- no results are inserted > | > | file ---- the results are interpreted as a file path, and are > | inserted into the buffer using the Org-mode file syntax > | > | raw ----- results are added directly to the org-mode file. This > | is a good option if you code block will output org-mode > | formatted text. > | > | org ----- this is the same as the 'raw' option > | > | html ---- results are added inside of a #+BEGIN_HTML block. This > | is a good option if you code block will output html > | formatted text. > | > | latex --- results are added inside of a #+BEGIN_LATEX block. > | This is a good option if you code block will output > | latex formatted text. > | > | code ---- the results are extracted in the syntax of the source > | code of the language being evaluated and are added > | inside of a #+BEGIN_SRC block with the source-code > | language set appropriately. Note this relies on the > | optional LANG argument. > | > | [back] > `---- > > [2] > ,---- > | ob-org has two non-standard header arguments in that it exports it's > | results by default and the result type defaults to raw, this ensures > | that the body of a begin_src org block exports transparently. > | > | This is a breaking change in that if you are currently using org > | code blocks to export org-fontified code you will have to set the > | ":exports" header argument for org-mode blocks to "code" on a block, > | file, language or system-wide basis. > `---- > [-- Attachment #1.2: Type: text/html, Size: 24873 bytes --] [-- Attachment #2: Type: text/plain, Size: 201 bytes --] _______________________________________________ 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 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Re: problem with babel and R 2010-08-26 20:20 ` David Hajage @ 2010-08-26 21:51 ` David Hajage 2010-08-26 22:06 ` David Hajage 0 siblings, 1 reply; 13+ messages in thread From: David Hajage @ 2010-08-26 21:51 UTC (permalink / raw To: Eric Schulte; +Cc: emacs-orgmode [-- Attachment #1.1: Type: text/plain, Size: 18629 bytes --] Oups, I forgot ob-org in my .emacs... OK, now, really sorry for this. David On Thu, Aug 26, 2010 at 22:20, David Hajage <dhajage@gmail.com> wrote: > I am so sorry to bother you again, but I must miss something. > > When I write: > > #+begin_src R :results output org :exports both > library(ascii) > options(asciiType = "org") > ascii(head(esoph)) > #+end_src > > The results is: > > #+results: > #+BEGIN_SRC org > | | 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 | > #+END_SRC > > OK, the result is surrounded by BEGIN_SRC org/END_SRC. But when I export > this, the results is exported as fontified org code. What should I do to > have this result interpreted as org markup? > David > > > > On Thu, Aug 26, 2010 at 18:10, Eric Schulte <schulte.eric@gmail.com>wrote: > >> Hi, >> >> A fix to this issue has been pushed up to the repository. As can now be >> read in the documentation of the `org-babel-insert-result' function [1], >> there is now a subtle distinction between ":results org" and ":results >> raw", where ":results org" will wrap code block results in a "begin_src >> org" block. The block wrapper makes it possible for the entirety of the >> results to be located and removed by Babel upon code block >> re-evaluation. >> >> In addition a new ob-org.el file has been added providing support for >> evaluation of Org-mode blocks. With this new language support loaded >> the above technique becomes a working replacement for ":results raw" >> allowing the body of the org code block to be interpreted as inline >> org-mode text on export. This is done through some non-standard default >> header arguments described in the recent commit message (see [2]) >> >> Best -- Eric >> >> "Eric Schulte" <schulte.eric@gmail.com> writes: >> >> > 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 <dhajage@gmail.com> 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 <schulte.eric@gmail.com> >> wrote: >> >> >> >>> Hi David, >> >>> >> >>> David Hajage <dhajage@gmail.com> 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 <schulte.eric@gmail.com >> > >> >>> 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 <dhajage@gmail.com> 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 <dhajage@gmail.com> >> >>> 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é. >> >>> >> >> Footnotes: >> [1] >> ,----[org-babel-insert-result] >> | org-babel-insert-result is a Lisp function in `ob.el'. >> | >> | (org-babel-insert-result RESULT &optional RESULT-PARAMS INFO HASH >> | INDENT LANG) >> | >> | Insert RESULT into the current buffer. >> | By default RESULT is inserted after the end of the >> | current source block. With optional argument RESULT-PARAMS >> | controls insertion of results in the org-mode file. >> | RESULT-PARAMS can take the following values... >> | >> | replace - (default option) insert results after the source block >> | replacing any previously inserted results >> | >> | silent -- no results are inserted >> | >> | file ---- the results are interpreted as a file path, and are >> | inserted into the buffer using the Org-mode file syntax >> | >> | raw ----- results are added directly to the org-mode file. This >> | is a good option if you code block will output org-mode >> | formatted text. >> | >> | org ----- this is the same as the 'raw' option >> | >> | html ---- results are added inside of a #+BEGIN_HTML block. This >> | is a good option if you code block will output html >> | formatted text. >> | >> | latex --- results are added inside of a #+BEGIN_LATEX block. >> | This is a good option if you code block will output >> | latex formatted text. >> | >> | code ---- the results are extracted in the syntax of the source >> | code of the language being evaluated and are added >> | inside of a #+BEGIN_SRC block with the source-code >> | language set appropriately. Note this relies on the >> | optional LANG argument. >> | >> | [back] >> `---- >> >> [2] >> ,---- >> | ob-org has two non-standard header arguments in that it exports it's >> | results by default and the result type defaults to raw, this ensures >> | that the body of a begin_src org block exports transparently. >> | >> | This is a breaking change in that if you are currently using org >> | code blocks to export org-fontified code you will have to set the >> | ":exports" header argument for org-mode blocks to "code" on a block, >> | file, language or system-wide basis. >> `---- >> > > [-- Attachment #1.2: Type: text/html, Size: 25486 bytes --] [-- Attachment #2: Type: text/plain, Size: 201 bytes --] _______________________________________________ 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 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Re: problem with babel and R 2010-08-26 21:51 ` David Hajage @ 2010-08-26 22:06 ` David Hajage 2010-08-26 23:37 ` Eric Schulte 0 siblings, 1 reply; 13+ messages in thread From: David Hajage @ 2010-08-26 22:06 UTC (permalink / raw To: Eric Schulte; +Cc: emacs-orgmode [-- Attachment #1.1: Type: text/plain, Size: 20298 bytes --] One comment: When I execute all the buffer (org-babel-execute-buffer), the result is: #+begin_src R :results output org :exports both library(ascii) options(asciiType = "org") ascii(head(esoph, 3)) #+end_src #+results: #+BEGIN_SRC org | | 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 | #+END_SRC #+results: | | 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 | Then, the results is repeated twice in the buffer. I understand why, but perhaps the "silent" option should be turned on by default for org code blocks? David On Thu, Aug 26, 2010 at 23:51, David Hajage <dhajage@gmail.com> wrote: > Oups, I forgot ob-org in my .emacs... OK, now, really sorry for this. > David > > > > On Thu, Aug 26, 2010 at 22:20, David Hajage <dhajage@gmail.com> wrote: > >> I am so sorry to bother you again, but I must miss something. >> >> When I write: >> >> #+begin_src R :results output org :exports both >> library(ascii) >> options(asciiType = "org") >> ascii(head(esoph)) >> #+end_src >> >> The results is: >> >> #+results: >> #+BEGIN_SRC org >> | | 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 | >> #+END_SRC >> >> OK, the result is surrounded by BEGIN_SRC org/END_SRC. But when I export >> this, the results is exported as fontified org code. What should I do to >> have this result interpreted as org markup? >> David >> >> >> >> On Thu, Aug 26, 2010 at 18:10, Eric Schulte <schulte.eric@gmail.com>wrote: >> >>> Hi, >>> >>> A fix to this issue has been pushed up to the repository. As can now be >>> read in the documentation of the `org-babel-insert-result' function [1], >>> there is now a subtle distinction between ":results org" and ":results >>> raw", where ":results org" will wrap code block results in a "begin_src >>> org" block. The block wrapper makes it possible for the entirety of the >>> results to be located and removed by Babel upon code block >>> re-evaluation. >>> >>> In addition a new ob-org.el file has been added providing support for >>> evaluation of Org-mode blocks. With this new language support loaded >>> the above technique becomes a working replacement for ":results raw" >>> allowing the body of the org code block to be interpreted as inline >>> org-mode text on export. This is done through some non-standard default >>> header arguments described in the recent commit message (see [2]) >>> >>> Best -- Eric >>> >>> "Eric Schulte" <schulte.eric@gmail.com> writes: >>> >>> > 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 <dhajage@gmail.com> 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 <schulte.eric@gmail.com> >>> wrote: >>> >> >>> >>> Hi David, >>> >>> >>> >>> David Hajage <dhajage@gmail.com> 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 < >>> schulte.eric@gmail.com> >>> >>> 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 <dhajage@gmail.com> 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 <dhajage@gmail.com> >>> >>> 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é. >>> >>> >>> >>> Footnotes: >>> [1] >>> ,----[org-babel-insert-result] >>> | org-babel-insert-result is a Lisp function in `ob.el'. >>> | >>> | (org-babel-insert-result RESULT &optional RESULT-PARAMS INFO HASH >>> | INDENT LANG) >>> | >>> | Insert RESULT into the current buffer. >>> | By default RESULT is inserted after the end of the >>> | current source block. With optional argument RESULT-PARAMS >>> | controls insertion of results in the org-mode file. >>> | RESULT-PARAMS can take the following values... >>> | >>> | replace - (default option) insert results after the source block >>> | replacing any previously inserted results >>> | >>> | silent -- no results are inserted >>> | >>> | file ---- the results are interpreted as a file path, and are >>> | inserted into the buffer using the Org-mode file syntax >>> | >>> | raw ----- results are added directly to the org-mode file. This >>> | is a good option if you code block will output org-mode >>> | formatted text. >>> | >>> | org ----- this is the same as the 'raw' option >>> | >>> | html ---- results are added inside of a #+BEGIN_HTML block. This >>> | is a good option if you code block will output html >>> | formatted text. >>> | >>> | latex --- results are added inside of a #+BEGIN_LATEX block. >>> | This is a good option if you code block will output >>> | latex formatted text. >>> | >>> | code ---- the results are extracted in the syntax of the source >>> | code of the language being evaluated and are added >>> | inside of a #+BEGIN_SRC block with the source-code >>> | language set appropriately. Note this relies on the >>> | optional LANG argument. >>> | >>> | [back] >>> `---- >>> >>> [2] >>> ,---- >>> | ob-org has two non-standard header arguments in that it exports it's >>> | results by default and the result type defaults to raw, this ensures >>> | that the body of a begin_src org block exports transparently. >>> | >>> | This is a breaking change in that if you are currently using org >>> | code blocks to export org-fontified code you will have to set the >>> | ":exports" header argument for org-mode blocks to "code" on a block, >>> | file, language or system-wide basis. >>> `---- >>> >> >> > [-- Attachment #1.2: Type: text/html, Size: 27208 bytes --] [-- Attachment #2: Type: text/plain, Size: 201 bytes --] _______________________________________________ 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 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Re: problem with babel and R 2010-08-26 22:06 ` David Hajage @ 2010-08-26 23:37 ` Eric Schulte 0 siblings, 0 replies; 13+ messages in thread From: Eric Schulte @ 2010-08-26 23:37 UTC (permalink / raw To: David Hajage; +Cc: emacs-orgmode Oh no! It appears this solution may have been too clever for it's own good. Thanks for suggesting ":results silent" as an additional default header argument, that appears to fixed this weird behavior. I've just pushed up that fix. Cheers -- Eric David Hajage <dhajage@gmail.com> writes: > One comment: > > When I execute all the buffer (org-babel-execute-buffer), the result is: > > #+begin_src R :results output org :exports both > library(ascii) > options(asciiType = "org") > ascii(head(esoph, 3)) > #+end_src > > #+results: > #+BEGIN_SRC org > | | 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 | > #+END_SRC > > #+results: > | | 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 | > > Then, the results is repeated twice in the buffer. I understand why, but > perhaps the "silent" option should be turned on by default for org code > blocks? > > David > > > On Thu, Aug 26, 2010 at 23:51, David Hajage <dhajage@gmail.com> wrote: > >> Oups, I forgot ob-org in my .emacs... OK, now, really sorry for this. >> David >> >> >> >> On Thu, Aug 26, 2010 at 22:20, David Hajage <dhajage@gmail.com> wrote: >> >>> I am so sorry to bother you again, but I must miss something. >>> >>> When I write: >>> >>> #+begin_src R :results output org :exports both >>> library(ascii) >>> options(asciiType = "org") >>> ascii(head(esoph)) >>> #+end_src >>> >>> The results is: >>> >>> #+results: >>> #+BEGIN_SRC org >>> | | 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 | >>> #+END_SRC >>> >>> OK, the result is surrounded by BEGIN_SRC org/END_SRC. But when I export >>> this, the results is exported as fontified org code. What should I do to >>> have this result interpreted as org markup? >>> David >>> >>> >>> >>> On Thu, Aug 26, 2010 at 18:10, Eric Schulte <schulte.eric@gmail.com>wrote: >>> >>>> Hi, >>>> >>>> A fix to this issue has been pushed up to the repository. As can now be >>>> read in the documentation of the `org-babel-insert-result' function [1], >>>> there is now a subtle distinction between ":results org" and ":results >>>> raw", where ":results org" will wrap code block results in a "begin_src >>>> org" block. The block wrapper makes it possible for the entirety of the >>>> results to be located and removed by Babel upon code block >>>> re-evaluation. >>>> >>>> In addition a new ob-org.el file has been added providing support for >>>> evaluation of Org-mode blocks. With this new language support loaded >>>> the above technique becomes a working replacement for ":results raw" >>>> allowing the body of the org code block to be interpreted as inline >>>> org-mode text on export. This is done through some non-standard default >>>> header arguments described in the recent commit message (see [2]) >>>> >>>> Best -- Eric >>>> >>>> "Eric Schulte" <schulte.eric@gmail.com> writes: >>>> >>>> > 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 <dhajage@gmail.com> 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 <schulte.eric@gmail.com> >>>> wrote: >>>> >> >>>> >>> Hi David, >>>> >>> >>>> >>> David Hajage <dhajage@gmail.com> 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 < >>>> schulte.eric@gmail.com> >>>> >>> 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 <dhajage@gmail.com> 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 <dhajage@gmail.com> >>>> >>> 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é. >>>> >>> >>>> >>>> Footnotes: >>>> [1] >>>> ,----[org-babel-insert-result] >>>> | org-babel-insert-result is a Lisp function in `ob.el'. >>>> | >>>> | (org-babel-insert-result RESULT &optional RESULT-PARAMS INFO HASH >>>> | INDENT LANG) >>>> | >>>> | Insert RESULT into the current buffer. >>>> | By default RESULT is inserted after the end of the >>>> | current source block. With optional argument RESULT-PARAMS >>>> | controls insertion of results in the org-mode file. >>>> | RESULT-PARAMS can take the following values... >>>> | >>>> | replace - (default option) insert results after the source block >>>> | replacing any previously inserted results >>>> | >>>> | silent -- no results are inserted >>>> | >>>> | file ---- the results are interpreted as a file path, and are >>>> | inserted into the buffer using the Org-mode file syntax >>>> | >>>> | raw ----- results are added directly to the org-mode file. This >>>> | is a good option if you code block will output org-mode >>>> | formatted text. >>>> | >>>> | org ----- this is the same as the 'raw' option >>>> | >>>> | html ---- results are added inside of a #+BEGIN_HTML block. This >>>> | is a good option if you code block will output html >>>> | formatted text. >>>> | >>>> | latex --- results are added inside of a #+BEGIN_LATEX block. >>>> | This is a good option if you code block will output >>>> | latex formatted text. >>>> | >>>> | code ---- the results are extracted in the syntax of the source >>>> | code of the language being evaluated and are added >>>> | inside of a #+BEGIN_SRC block with the source-code >>>> | language set appropriately. Note this relies on the >>>> | optional LANG argument. >>>> | >>>> | [back] >>>> `---- >>>> >>>> [2] >>>> ,---- >>>> | ob-org has two non-standard header arguments in that it exports it's >>>> | results by default and the result type defaults to raw, this ensures >>>> | that the body of a begin_src org block exports transparently. >>>> | >>>> | This is a breaking change in that if you are currently using org >>>> | code blocks to export org-fontified code you will have to set the >>>> | ":exports" header argument for org-mode blocks to "code" on a block, >>>> | file, language or system-wide basis. >>>> `---- >>>> >>> >>> >> ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2010-08-26 23:38 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-08-17 8:17 problem with babel and R David Hajage 2010-08-17 12:01 ` David Hajage 2010-08-17 13:57 ` Eric Schulte 2010-08-17 14:41 ` David Hajage 2010-08-17 15:15 ` Eric Schulte 2010-08-17 17:07 ` Tom Short [not found] ` <1668ca$1pq4c@mail.curie.net> 2010-08-18 6:53 ` David Hajage 2010-08-18 22:13 ` Eric Schulte 2010-08-26 16:10 ` Eric Schulte 2010-08-26 20:20 ` David Hajage 2010-08-26 21:51 ` David Hajage 2010-08-26 22:06 ` David Hajage 2010-08-26 23:37 ` Eric Schulte
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.