emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [O] R code block produces only partial output


From: Rainer M Krug
Subject: Re: [O] R code block produces only partial output
Date: Sat, 09 Aug 2014 10:48:30 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (darwin)

"Charles C. Berry" <address@hidden> writes:

> On Wed, 6 Aug 2014, Aaron Ecay wrote:
>
>> Hi Eric,
>>
>> 2014ko abuztuak 6an, Eric Schulte-ek idatzi zuen:
>>
>> [...]
>>
>>> Perhaps you could begin with a patch for the regexp issue in this
>>> thread?
>>
>> I have pushed a patch which allows us to avoid the regex issue
>> entirely by using a native R method to capture the session output to a
>> file.
>>
>> This introduces the change that the output no longer appears in the
>> session buffer, but I think that’s actually an improvement: we were not
>> previously echoing the commands to the buffer, such that the output
>> would show up “out of the blue” without any indication of how it got
>> there.
>
> Hi Aaron,
>
> I like what you are trying to do, but ...
>
> 1) The change has at least one bug: Remote sessions are broken by this 
> change.
>
> 2) The behavior of :results output is modified in ways that might not be 
> desired. i.e. warnings and errors will not show up in the output.
>
> Can you revert this change until the bugs are sorted out and consensus 
> about the proper handling of cases like '2' is reached?
>
> Can I also suggest that in the future before a change is pushed, that the 
> patch is announced so we can try it out or at least eyeball it and discuss
> issues/bugs?

I think that would be a good idea, or create a separate branch for
testing these features.

>
> Details:
>
> Issue 1) ===========
>
> If I open a *.org file on a remote machine and C-c C-c on a src block that 
> has `:session :results output', after the usual session startup the src 
> block fails. The session buffer shows this
>
> ====
> Error in file(file, if (append) "a" else "w") :
>    cannot open the connection
> In addition: Warning message:
> In file(file, if (append) "a" else "w") :
>    cannot open file '/scpc:berry@<DELETED.URL>:/tmp/R-1155xWV': 
> No such file or directory
>> 
> ===
>
> The file '/tmp/R-1155xWV' was created.
>
> I think if the tramp file localname is used. it might work. I do not know 
> tramp, but maybe something like
>
>   (let output-file-localname
>    (if (tramp-tramp-file-p output-file)
>        (tramp-file-name-localname
>         (tramp-dissect-file-name output-file))
>      output-file))
>
> is good enough.
>
>
> Issue 2) ===========
>
> ECM:
>
> #+NAME: aa
> #+BEGIN_SRC R :session R2 :results output
> warning("this is a warning")
> 1+1
> #+END_SRC
>
> #+RESULTS: aa
> : [1] 2
>
> For some purposes having the warnings in the #+RESULTS: block is helpful.
>
> And when revising code, having the errors in the #+RESULTS helps - 
> especially if I have to put aside work in progress.

Instead of capture.output, one could possibly use sink() as it can also
capture error messages and warnings, as shown in the help:

#+begin_src R 
## capture all the output to a file.
zz <- file("all.Rout", open = "wt")
sink(zz)
sink(zz, type = "message")
try(log("a"))
## back to the console
sink(type = "message")
sink()
file.show("all.Rout")
#+end_src

This combined with a try() bloxk could work?

Cheers,

Rainer

>
> HTH,
>
> Chuck
>

-- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, 
UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :       +33 - (0)9 53 10 27 44
Cell:       +33 - (0)6 85 62 59 98
Fax :       +33 - (0)9 58 10 27 44

Fax (D):    +49 - (0)3 21 21 25 22 44

email:      address@hidden

Skype:      RMkrug

PGP: 0x0F52F982

Attachment: pgpvEMHg6TLtk.pgp
Description: PGP signature


reply via email to

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