1
0
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2024-12-01 08:17:34 +00:00

ob-R.el: Improve the capturing of output-type results in sessions.

* lisp/ob-R.el (org-babel-R-evaluate-session): Improve the capturing
of R output.

This uses a built-in facility of R to write the output to a file,
rather than trying to capture it in an emacs buffer using ESS (a
process by which the output can get mixed with other irrelevant text,
such as R command prompts).
This commit is contained in:
Aaron Ecay 2014-08-07 01:51:37 -04:00
parent d035c14765
commit b51746332d

View File

@ -365,7 +365,7 @@ last statement in BODY, as elisp."
(defvar ess-eval-visibly-p)
(defun org-babel-R-evaluate-session
(session body result-type result-params column-names-p row-names-p)
(session body result-type result-params column-names-p row-names-p)
"Evaluate BODY in SESSION.
If RESULT-TYPE equals 'output then return standard output as a
string. If RESULT-TYPE equals 'value then return the value of the
@ -395,23 +395,20 @@ last statement in BODY, as elisp."
(org-babel-import-elisp-from-file tmp-file '(16)))
column-names-p)))
(output
(mapconcat
'org-babel-chomp
(butlast
(delq nil
(mapcar
(lambda (line) (when (> (length line) 0) line))
(mapcar
(lambda (line) ;; cleanup extra prompts left in output
(if (string-match
"^\\([ ]*[>+\\.][ ]?\\)+\\([[0-9]+\\|[ ]\\)" line)
(substring line (match-end 1))
line))
(org-babel-comint-with-output (session org-babel-R-eoe-output)
(insert (mapconcat 'org-babel-chomp
(list body org-babel-R-eoe-indicator)
"\n"))
(inferior-ess-send-input)))))) "\n"))))
(let* ((output-file (org-babel-temp-file "R-"))
(sentinel-file (concat output-file "-sentinel")))
(org-babel-comint-eval-invisibly-and-wait-for-file
session sentinel-file
(format "capture.output({%s}, file=%S); file.create(%S)"
(org-babel-chomp body)
output-file
sentinel-file))
(with-temp-buffer
(insert-file-contents output-file)
(goto-char (point-min))
(flush-lines "^$")
(delete-trailing-whitespace)
(buffer-string))))))
(defun org-babel-R-process-value-result (result column-names-p)
"R-specific processing of return value.