[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