emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [O] R source code block :session


From: Berry, Charles
Subject: Re: [O] R source code block :session
Date: Sun, 30 Sep 2018 18:03:45 +0000


> On Sep 30, 2018, at 8:18 AM, Seb <address@hidden> wrote:
> 
> Hello,
> 
> I'm running into a couple of issues with R source code blocks using
> :session :
> 
> ---<--------------------cut here---------------start------------------->---
> #+NAME: test01
> #+BEGIN_SRC R :session :results output
> library(ascii)
> numstbl <- table(1:4, 1:4)
> summary(numstbl)
> #+END_SRC
> 
> #+RESULTS: test01
> : R> Number of cases in table: 4
> : Number of factors: 2
> : Test for independence of all factors:
> :     Chisq = 12, df = 9, p-value = 0.2
> :     Chi-squared approximation may be incorrect
> ---<--------------------cut here---------------end--------------------->---
> 
> Notice the "R> " prompt that prefixes the actual output.  

The issue is that babel has to clean up dangling prompts from the R session 
buffer and is currently not smart enough to do this in your case.

Somebody who is well versed in regex's might be able to compare the regex that 
ess sets in the session buffer

        "^[]a-zA-Z0-9.[]*\\(?:[>+.] \\)*> "

and compare that to the current regex just after `;; cleanup extra prompts left 
in output' in org-babel-R-evaluate-session      

        "^\\([>+.]\\([ ][>.+]\\)*[ ]\\)"

and propose a fix that handles your case.  

However, this is bound to be a bit *fragile* as arbitrary prompts might end up 
looking like bona fide output and vice versa.

I think your easiest path forward is to use the default R prompt. Or maybe use 
these header args:

        :session :results value drawer :prologue "capture.output({" :epilogue 
"})"

> If the first
> line (`library` call) is removed, then the prompt is correctly excluded
> from the results output.  I do have `options(prompt="R> ")` in my
> ~/.Rprofile.
> 
> The other problem:
> 
> ---<--------------------cut here---------------start------------------->---
> #+NAME: test02
> #+BEGIN_SRC R :results output org
> library(ascii)
> options(asciiType="org")
> ascii(summary(table(1:4, 1:4)))
> #+END_SRC
> 
> #+RESULTS: test02
> #+BEGIN_SRC org
> - Number of cases in table: 4
> - Number of factors: 2
> - Test for independence of all factors:
>  - Chisq = 12, df = 9, p-value = 0.2
>  - Chi-squared approximation may be incorrect
> #+END_SRC
> ---<--------------------cut here---------------end--------------------->---
> 
> According to the documentation
> https://orgmode.org/worg/org-contrib/babel/languages/ob-doc-R.html, the
> results output should be wrapped in #+BEGIN_ORG #+END_ORG, not in
> another source code block.
> 

The manual says it is wrapped as you saw above. See 

        (info "(org) Results of Evaluation")

Unfortunately, the worg pages are not as well curated as the manual.  So advice 
that is out of date persists.

You might want to use `:wrap' to get the behavior you seek, but be aware there 
is no `org' special block in the current releases. So even if you get to wrap 
the results in begin/end-org, it will probably not behave as you want or expect.

Perhaps `drawer' will satisfy your needs.

Chuck


ps. Org mode version 9.1.14





reply via email to

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