Rearrange R evaluation code so that .Last.value evaluated in :results value case only

One example of a problem that crops up without this is a block like

f <- function(x) x

without this change, in :results output mode, we make an attempt to
coerce .Last.value (a function) to a data frame, which throws an
error.
This commit is contained in:
Dan Davison 2009-09-03 11:47:32 -04:00
parent 37e152f61d
commit ed688ed938
1 changed files with 11 additions and 6 deletions

View File

@ -117,12 +117,17 @@ last statement in BODY, as elisp."
;; comint session evaluation
(org-babel-comint-in-buffer buffer
(let* ((tmp-file (make-temp-file "org-babel-R"))
(last-value-eval
(format "write.table(.Last.value, file=\"%s\", sep=\"\\t\", na=\"nil\",row.names=FALSE, col.names=%s, quote=FALSE)" tmp-file (if column-names-p "TRUE" "FALSE")))
(full-body (mapconcat #'org-babel-chomp
(list body last-value-eval org-babel-R-eoe-indicator) "\n"))
(raw (org-babel-comint-with-output buffer org-babel-R-eoe-output nil
(insert full-body) (inferior-ess-send-input))) broke results)
(full-body
(case result-type
(value
(mapconcat #'org-babel-chomp (list body
(format "write.table(.Last.value, file=\"%s\", sep=\"\\t\", na=\"nil\",row.names=FALSE, col.names=%s, quote=FALSE)" tmp-file (if column-names-p "TRUE" "FALSE"))
org-babel-R-eoe-indicator) "\n"))
(output
(mapconcat #'org-babel-chomp (list body org-babel-R-eoe-indicator) "\n"))))
(raw (org-babel-comint-with-output buffer org-babel-R-eoe-output nil
(insert full-body) (inferior-ess-send-input)))
broke results)
(case result-type
(value (org-babel-R-process-value-result
(org-babel-import-elisp-from-file tmp-file) column-names-p))