From 8872454566445e7714865ff052a44913503080b2 Mon Sep 17 00:00:00 2001 From: Dan Davison Date: Tue, 20 Apr 2010 12:16:21 -0400 Subject: [PATCH] org-babel-expand-body:R --- contrib/babel/lisp/langs/org-babel-R.el | 35 ++++++++++++++----------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/contrib/babel/lisp/langs/org-babel-R.el b/contrib/babel/lisp/langs/org-babel-R.el index e7188d9b4..ae6b6cbfd 100644 --- a/contrib/babel/lisp/langs/org-babel-R.el +++ b/contrib/babel/lisp/langs/org-babel-R.el @@ -35,6 +35,22 @@ (add-to-list 'org-babel-tangle-langs '("R" "R" "#!/usr/bin/env Rscript")) +(defun org-babel-expand-body:R (body params &optional processed-params) + (let* ((processed-params (or processed-params + (org-babel-process-params params))) + (vars (mapcar (lambda (i) (cons (car (nth i (second processed-params))) + (org-babel-reassemble-table + (cdr (nth i (second processed-params))) + (cdr (nth i (fifth processed-params))) + (cdr (nth i (sixth processed-params)))))) + (number-sequence 0 (1- (length (second processed-params)))))) + (out-file (cdr (assoc :file params)))) + (concat + (if out-file (concat (org-babel-R-construct-graphics-device-call out-file params) "\n") "") + (mapconcat ;; define any variables + (lambda (pair) (org-babel-R-assign-elisp (car pair) (cdr pair))) vars "\n") + "\n" body "\n" (if out-file "dev.off()\n" "")))) + (defun org-babel-execute:R (body params) "Execute a block of R code with org-babel. This function is called by `org-babel-execute-src-block'." @@ -43,24 +59,13 @@ called by `org-babel-execute-src-block'." (let* ((processed-params (org-babel-process-params params)) (result-type (fourth processed-params)) (session (org-babel-R-initiate-session (first processed-params) params)) - (vars (mapcar (lambda (i) (cons (car (nth i (second processed-params))) - (org-babel-reassemble-table - (cdr (nth i (second processed-params))) - (cdr (nth i (fifth processed-params))) - (cdr (nth i (sixth processed-params)))))) - (number-sequence 0 (1- (length (second processed-params)))))) (colnames-p (and (cdr (assoc :colnames params)) - (string= "yes" (cdr (assoc :colnames params))))) + (string= "yes" (cdr (assoc :colnames params))))) (rownames-p (and (cdr (assoc :rownames params)) - (string= "yes" (cdr (assoc :rownames params))))) + (string= "yes" (cdr (assoc :rownames params))))) (out-file (cdr (assoc :file params))) - (augmented-body - (concat - (if out-file (concat (org-babel-R-construct-graphics-device-call out-file params) "\n") "") - (mapconcat ;; define any variables - (lambda (pair) (org-babel-R-assign-elisp (car pair) (cdr pair) colnames-p rownames-p)) vars "\n") - "\n" body "\n" (if out-file "dev.off()\n" ""))) - (result (org-babel-R-evaluate session augmented-body result-type colnames-p rownames-p))) + (full-body (org-babel-expand-body:R body params processed-params)) + (result (org-babel-R-evaluate session full-body result-type column-names-p))) (or out-file result)))) (defun org-babel-prep-session:R (session params)