diff --git a/lisp/org-babel-R.el b/lisp/org-babel-R.el index a48ed25f0..6f9525657 100644 --- a/lisp/org-babel-R.el +++ b/lisp/org-babel-R.el @@ -62,16 +62,14 @@ R process in `org-babel-R-buffer'." (unless org-babel-R-buffer (error "No active R buffer")) (org-babel-R-input-command (if (listp value) - (let ((transition-file (make-temp-file "org-babel-R-import")) - has-header) + (let ((transition-file (make-temp-file "org-babel-R-import"))) ;; ensure VALUE has an orgtbl structure (depth of at least 2) (unless (listp (car value)) (setq value (list value))) - (setq has-header (and (symbolp (cadr value)) (equal (cadr value) 'hline))) (with-temp-file transition-file (insert (orgtbl-to-tsv value '(:fmt org-babel-R-quote-tsv-field))) (insert "\n")) - (format "%s <- read.table(\"%s\", header=%s, sep=\"\\t\", as.is=TRUE)" - name transition-file (if has-header "TRUE" "FALSE"))) + (format "%s <- read.table(\"%s\", header=FALSE, sep=\"\\t\", as.is=TRUE)" + name transition-file)) (format "%s <- %s" name (org-babel-R-quote-tsv-field value))))) (defun org-babel-R-to-elisp (func-name) @@ -79,8 +77,9 @@ 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(), file=\"%s\", sep=\"\\t\", na=\"nil\",row.names=FALSE, col.names=FALSE, quote=FALSE)" - func-name tmp-file)) + (format + "write.table(%s(), file=\"%s\", sep=\"\\t\", na=\"nil\",row.names=FALSE, col.names=FALSE, quote=FALSE)" + func-name tmp-file)) (with-temp-buffer (condition-case nil (progn @@ -88,9 +87,7 @@ R process in `org-babel-R-buffer'." (delete-file tmp-file) (setq result (mapcar (lambda (row) (mapcar #'org-babel-R-read row)) - (org-table-to-lisp))) - ;; (setq result (org-babel-R-set-header-row result)) - ) + (org-table-to-lisp)))) (error nil)) (if (null (cdr result)) ;; if result is trivial vector, then scalarize it (if (consp (car result)) @@ -100,27 +97,6 @@ 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 (or (string-equal (caar table) "V1") - (string-equal (caar table) "x")) - - ;; write.table(1, col.names=TRUE) makes a colname called "x". I - ;; think shows that this approach is too much of a hack: we - ;; can't take some totally different action just because we see - ;; an "x" there that might or might not be a automatic name. - - ;; 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) @@ -134,8 +110,6 @@ the first row and return the org table without an hline." (defun org-babel-R-initiate-R-buffer () "If there is not a current R process then create one." - ;; DED: Ideally I think we should use ESS mechanisms for this sort - ;; of thing. See ess-force-buffer-current. (unless (and (buffer-live-p org-babel-R-buffer) (get-buffer org-babel-R-buffer)) (save-excursion (R)