From 39f7174884e17cdaf339c257ff32fc931cfb736a Mon Sep 17 00:00:00 2001 From: Eric Schulte Date: Wed, 3 Jun 2009 15:26:32 -0700 Subject: [PATCH] Revert "Revert "Make org table result have header row and hline when appropriate..."" This reverts commit dff01091dc72f83a5c92ae87a1b4824af1ecd334. Yes, this is a reversion of a reversion, as the original commit has been reverted in the master branch, I'm now just going to revert the reversion and then merge with master to maintain inter-branch cohesion. oh, did I mention... "revert" --- lisp/org-babel-R.el | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/lisp/org-babel-R.el b/lisp/org-babel-R.el index 70087e191..e81d97d70 100644 --- a/lisp/org-babel-R.el +++ b/lisp/org-babel-R.el @@ -79,18 +79,18 @@ R process in `org-babel-R-buffer'." `org-babel-R-buffer' as Emacs lisp." (let ((tmp-file (make-temp-file "org-babel-R")) result) (org-babel-R-input-command - (format "write.table(%s(), \"%s\", , ,\"\\t\", ,\"nil\", , FALSE, FALSE)" func-name tmp-file)) + (format "write.table(%s(), file=\"%s\", sep=\"\\t\", na=\"nil\",row.names=FALSE, col.names=TRUE, quote=FALSE)" + func-name tmp-file)) (with-temp-buffer - (message "before condition") (condition-case nil (progn (org-table-import tmp-file nil) (delete-file tmp-file) (setq result (mapcar (lambda (row) (mapcar #'org-babel-R-read row)) - (org-table-to-lisp)))) + (org-table-to-lisp))) + (setq result (org-babel-R-set-header-row result))) (error nil)) - (message "after condition") (if (null (cdr result)) ;; if result is trivial vector, then scalarize it (if (consp (car result)) (if (null (cdr (car result))) @@ -99,6 +99,20 @@ R process in `org-babel-R-buffer'." (car result)) result)))) +(defun org-babel-R-set-header-row (table) + "Check whether the table appears to have (a) genuine +user-supplied column names, or (b) default column names added +automatically by R. In case (a), maintain the first row of the +table as a header row and insert an hline. In case (b), remove +the first row and return the org table without an hline." + (if (string-equal (caar table) "V1") + ;; The first row looks like it contains default column names + ;; added by R. This condition could be improved so that it + ;; checks whether the first row is ("V1" "V2" ... "V$n") where + ;; $n is the number of columns. + (cdr table) + (cons (car table) (cons 'hline (cdr table))))) + (defun org-babel-R-read (cell) "Strip nested \"s from around strings in exported R values." (org-babel-read (or (and (stringp cell)