diff options
author | Eric Schulte <schulte.eric@gmail.com> | 2011-09-15 15:43:35 -0600 |
---|---|---|
committer | Eric Schulte <schulte.eric@gmail.com> | 2011-09-15 15:43:35 -0600 |
commit | 65d05b00b0dde3e0e1bdfedf4e840061aa84b9ba (patch) | |
tree | b70bf4dd4b8086687fd95fbc2bac51ee9f31cebf | |
parent | 7eaa67260b70d59aa695e0e0676ed94b3c4724fa (diff) | |
download | org-mode-65d05b00b0dde3e0e1bdfedf4e840061aa84b9ba.tar.gz |
ob-R: don't process output when "scalar" or "verbatim"
* lisp/ob-R.el (org-babel-execute:R): Collect and pass along the
result-params.
(org-babel-R-evaluate): Accept result-params and if "scalar" or
"verbatim" don't process output.
(org-babel-R-evaluate-session): Accept result-params and if "scalar"
or "verbatim" don't process output.
-rw-r--r-- | lisp/ob-R.el | 36 |
1 files changed, 24 insertions, 12 deletions
diff --git a/lisp/ob-R.el b/lisp/ob-R.el index 09c8950..f99664e 100644 --- a/lisp/ob-R.el +++ b/lisp/ob-R.el @@ -79,7 +79,8 @@ "Execute a block of R code. This function is called by `org-babel-execute-src-block'." (save-excursion - (let* ((result-type (cdr (assoc :result-type params))) + (let* ((result-params (cdr (assoc :result-params params))) + (result-type (cdr (assoc :result-type params))) (session (org-babel-R-initiate-session (cdr (assoc :session params)) params)) (colnames-p (cdr (assoc :colnames params))) @@ -88,7 +89,7 @@ This function is called by `org-babel-execute-src-block'." (full-body (org-babel-expand-body:R body params graphics-file)) (result (org-babel-R-evaluate - session full-body result-type + session full-body result-type result-params (or (equal "yes" colnames-p) (org-babel-pick-name (cdr (assoc :colname-names params)) colnames-p)) @@ -231,16 +232,15 @@ current code buffer." (defvar org-babel-R-write-object-command "{function(object,transfer.file){object;invisible(if(inherits(try({tfile<-tempfile();write.table(object,file=tfile,sep=\"\\t\",na=\"nil\",row.names=%s,col.names=%s,quote=FALSE);file.rename(tfile,transfer.file)},silent=TRUE),\"try-error\")){if(!file.exists(transfer.file))file.create(transfer.file)})}}(object=%s,transfer.file=\"%s\")") (defun org-babel-R-evaluate - (session body result-type column-names-p row-names-p) + (session body result-type result-params column-names-p row-names-p) "Evaluate R code in BODY." - (if session - (org-babel-R-evaluate-session - session body result-type column-names-p row-names-p) - (org-babel-R-evaluate-external-process - body result-type column-names-p row-names-p))) + (funcall (if session + #'org-babel-R-evaluate-session + #'org-babel-R-evaluate-external-process) + body result-type result-params column-names-p row-names-p)) (defun org-babel-R-evaluate-external-process - (body result-type column-names-p row-names-p) + (body result-type result-params column-names-p row-names-p) "Evaluate BODY in external R process. If RESULT-TYPE equals 'output then return standard output as a string. If RESULT-TYPE equals 'value then return the value of the @@ -257,11 +257,17 @@ last statement in BODY, as elisp." (format "{function ()\n{\n%s\n}}()" body) (org-babel-process-file-name tmp-file 'noquote))) (org-babel-R-process-value-result - (org-babel-import-elisp-from-file tmp-file '(16)) column-names-p))) + (if (or (member "scalar" result-params) + (member "verbatim" result-params)) + (with-temp-buffer + (insert-file-contents tmp-file) + (buffer-string)) + (org-babel-import-elisp-from-file tmp-file '(16))) + column-names-p))) (output (org-babel-eval org-babel-R-command body)))) (defun org-babel-R-evaluate-session - (session body result-type 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 @@ -283,7 +289,13 @@ last statement in BODY, as elisp." "FALSE") ".Last.value" (org-babel-process-file-name tmp-file 'noquote))) (org-babel-R-process-value-result - (org-babel-import-elisp-from-file tmp-file '(16)) column-names-p))) + (if (or (member "scalar" result-params) + (member "verbatim" result-params)) + (with-temp-buffer + (insert-file-contents tmp-file) + (buffer-string)) + (org-babel-import-elisp-from-file tmp-file '(16))) + column-names-p))) (output (mapconcat #'org-babel-chomp |