|  | @@ -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)
 |