0
0
Fork 1
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2024-09-30 05:07:48 +00:00

Starting on new R graphics scheme

This commit is contained in:
Dan Davison 2010-12-20 17:35:23 +00:00
parent a871c6a77c
commit 607efd4e30

View file

@ -51,21 +51,28 @@
(defvar org-babel-R-command "R --slave --no-save" (defvar org-babel-R-command "R --slave --no-save"
"Name of command to use for executing R code.") "Name of command to use for executing R code.")
(defun org-babel-expand-body:R (body params) (defun org-babel-expand-body:R (body params &optional graphics-file)
"Expand BODY according to PARAMS, return the expanded body." "Expand BODY according to PARAMS, return the expanded body."
(let ((out-file (cdr (assoc :file params)))) (let ((graphics-file
(or graphics-file (org-babel-R-graphical-output-file params))))
(mapconcat (mapconcat
#'identity #'identity
((lambda (inside) ((lambda (inside)
(if out-file (if graphics-file
(append (append
(list (org-babel-R-construct-graphics-device-call out-file params)) (list (org-babel-R-construct-graphics-device-call
graphics-file params))
inside inside
(list "dev.off()")) (list "dev.off()"))
inside)) inside))
(append (org-babel-variable-assignments:R params) (append (org-babel-variable-assignments:R params)
(list body))) "\n"))) (list body))) "\n")))
(defun org-babel-R-graphical-output-file (params)
"Name of file to which R should send graphical output."
(and (member "graphics" (cdr (assq :result-params params)))
(cdr (assq :file params))))
(defun org-babel-execute:R (body params) (defun org-babel-execute:R (body params)
"Execute a block of R code. "Execute a block of R code.
This function is called by `org-babel-execute-src-block'." This function is called by `org-babel-execute-src-block'."
@ -75,8 +82,8 @@ This function is called by `org-babel-execute-src-block'."
(cdr (assoc :session params)) params)) (cdr (assoc :session params)) params))
(colnames-p (cdr (assoc :colnames params))) (colnames-p (cdr (assoc :colnames params)))
(rownames-p (cdr (assoc :rownames params))) (rownames-p (cdr (assoc :rownames params)))
(out-file (cdr (assoc :file params))) (graphics-file (org-babel-R-graphical-output-file params))
(full-body (org-babel-expand-body:R body params)) (full-body (org-babel-expand-body:R body params graphics-file))
(result (result
(org-babel-R-evaluate (org-babel-R-evaluate
session full-body result-type session full-body result-type
@ -87,7 +94,7 @@ This function is called by `org-babel-execute-src-block'."
(org-babel-pick-name (org-babel-pick-name
(cdr (assoc :rowname-names params)) rownames-p))))) (cdr (assoc :rowname-names params)) rownames-p)))))
(message "result is %S" result) (message "result is %S" result)
(or out-file result)))) (if graphics-file nil result))))
(defun org-babel-prep-session:R (session params) (defun org-babel-prep-session:R (session params)
"Prepare SESSION according to the header arguments specified in PARAMS." "Prepare SESSION according to the header arguments specified in PARAMS."